You are on page 1of 16

Effective Design of Distributed Spreadsheets

Chapter 3

Effective Design of Distributed


Spreadsheets
The collection and distribution of information is the essence of any
workflow process. Information is collected and distributed either because
it is the very purpose of the process, or because the information is used in
making decisions about how the process will flow to its conclusion. A
good workflow process collects raw data and converts it into useful
information on which decisions can be made and actions taken, and then
enables users to make the decisions or take the actions. In the expense
report example given in Chapter 1, “An Introduction to Ultimus,” the
workflow collects data about expenses because that is what the process is
designed to do. However, if we enhance the process so that the expense
report must be approved by the employee’s Supervisor and his Supervisor
if the amount of the expenses are more than $500, then the data collected
also determines the flow of the process. If we further enhance the process
by entering the expenses into a departmental travel expense file, we are
converting the data into information about departmental expenses and
overheads, which are useful in making decisions about the business.

Distributed Spreadsheets
Ultimus uses spreadsheets to collect and distribute data in the course of a
workflow process. Since the participants in a business process are not
located at one place, we use the model of “Distributed Spreadsheets.” The
Patented Distributed Spreadsheet Model (#6,157,934) is one of the most
powerful feature of Ultimus which provides you flexibility and ease in

Ultimus User’s Guide 57


Distributed Spreadsheets

designing and implementing workflow processes. The “Distributed


Spreadsheet” Model is shown in the following illustration:

Each step in an Ultimus workflow process has a form and a local


spreadsheet which is invoked by the user. The process also has one main
spreadsheet. Information (data) moves from the form to the local
spreadsheet. When a step is complete, the information is transferred from
the local spreadsheet to the main spreadsheet of the process. In the main
spreadsheet, it is combined and synchronized with data coming from other
steps in the workflow. From there it moves to the local spreadsheets of
other steps, if required.
An Ultimus workflow process uses two types of spreadsheets:
• Main Spreadsheet: This is the primary spreadsheet used by a
workflow process. For every process there is one main spreadsheet.
The main spreadsheet is used to consolidate the data received from all

58 Ultimus User’s Guide


Effective Design of Distributed Spreadsheets

the steps in the process and perform centralized calculations. The


main spreadsheet is located on the Workflow Server.
• Local Spreadsheet: There are many local spreadsheets; one for each
step in the process. Local spreadsheets also have cells which contain
data, text, or formulas. Some of these cells are linked to “forms”
which the user uses to enter data. Other cells are linked to cells in the
main spreadsheet. When the user gets a task, the contents of linked
cells in the local spreadsheet are updated with the data from the main
spreadsheet. When the user performs the task, the form shows data
from the local spreadsheet. When the user enters data, it goes into the
local spreadsheet which recalculates and shows new values on the
form instantaneously. This allows users to design intelligent forms
without programming. When the user is finished with the task, the
contents of the linked cells in the local spreadsheet are sent back to
the main spreadsheet. The main spreadsheet, thus, collects data from
all the users involved, and performs calculations on this data. The
results of these calculations are passed on to the next stage of the
process and may also be used to make decisions regarding which steps
will be executed.
Note: Many users are already familiar with popular spreadsheets, such as
Microsoft Excel and Lotus 1-2-3. If you are not familiar with these, we
strongly recommend that you learn about one of them before
proceeding. Since the spreadsheets used in Ultimus are functionally
most similar to Microsoft Excel, we recommend that, if you have a
choice, you should familiarize yourself with Excel.

Rules About Spreadsheets and Variables


1. Ultimus spreadsheets are functionally a subset of Microsoft Excel.
Many of the mathematical and logical functions of Excel are available
in the Ultimus spreadsheets. A description of these functions is
provided in Ultimus document “Spreadsheet Functions,” which is
included on the Ultimus CD as an Adobe Acrobat PDF file.
2. There is one main spreadsheet for each process.
3. There is a local spreadsheet for every step in the process.
4. A cell in the local spreadsheet may be linked to one or more Controls
in the form for that step.

Ultimus User’s Guide 59


Distributed Spreadsheets

5. A cell in the local spreadsheet may also be linked to one cell in the
main spreadsheet.
6. If a local spreadsheet cell is linked to a main spreadsheet cell, the
contents of the main spreadsheet cell are transferred to the local
spreadsheet cell before the step is invoked, and are transferred back to
the main spreadsheet cell after the step is completed.
7. The background color of the spreadsheets are coded as follows:
• Main Spreadsheet: Variable color (determined by the user).
• Local Spreadsheets: White
8. Main spreadsheet cells and cell ranges may be named. Named main
spreadsheet cells or ranges are called workflow variables. Local
variables are named cells in a local spreadsheet. By naming cells, you
do not have to remember the Row-Column address of important cells.
9. Workflow variables can be used as arguments in creating Event
Conditions Tables. They can be used for powerful evaluation of
conditions and performing activities based upon those conditions.
Event Conditions Tables are described in Chapter 4, “Event
Conditions Tables and Actions.”
10. Global variables are automatically linked to new and current steps in
the process, which makes it much easier to define variables and links.
A global variable is linked to the same cell as in the main spreadsheet
and the name of the cell is defined automatically in the local
spreadsheets. Global variables are linked bi-directionally to the same
cell in each step of the workflow process.
11. Workflow variables can be used as databound variables, which are tied
to a database field. Before a workflow variable can be declared a
databound variable, the process map must be linked to a database
table in the Map Properties (see the Ultimus Designer Manual).
During the execution of the workflow, whenever a workflow Incident
is initiated and executed, the Ultimus Workflow Server automatically
updates the database after every step. All system variables can also be
linked to this database table. Thus, Memo, Incident Name, Summary,
Priority, and more may all be saved in the user database.

60 Ultimus User’s Guide


Effective Design of Distributed Spreadsheets

12. Workflow variables may be used as arguments for Cell Content


Recipient Types for steps. This allows you to assign recipients
dynamically and also create dynamic groups.
13. Variables are used to pass arguments to Flobots.
14. Workflow variables can be linked with local spreadsheets cells of
individual steps. This allows you to control which pieces of
information are shared with specific steps.

Designing Spreadsheets For Your Processes


The Ultimus Workflow suite uses the distributed spreadsheets to collect
and distribute data in the course of a workflow process. The data collected
enables users to make decisions or take actions. The Ultimus spreadsheets
route data used in a process, not the form itself. Therefore, it is essential to
gather all the information about a workflow process before attempting to
design it. Being aware of what data is to be collected at each step and the
decisions made by the Workflow Server will save you considerable design
time. Well-designed spreadsheets are the foundation for an effective
process design.

Keep It Small and Simple


The primary goal of good spreadsheet design is to keep it small and
simple. When a user opens a task from the Ultimus Client task list, the
following interactions take place with the Ultimus Server:
• Painting of the forms
• Downloading the local spreadsheet data
• Connecting to recordsets
The number of controls used in the form dictates how much time it takes
to paint it. Once the form has been downloaded for the first time, the
page(s) are cached automatically in the Client to improve future load times.
However, the local spreadsheet data is downloaded each time the user
opens the form. Unlike the cached form controls, spreadsheet data is only

Ultimus User’s Guide 61


Effective Spreadsheet Design

retrieved and stored in memory while the form is displayed. The smaller
the local spreadsheet, the faster the form will load.
Ultimus also provides functions for minimizing the load times for
recordsets. For complete details, see the Ultimus Designer Manual.

Effective Spreadsheet Design


Designing a maintainable spreadsheet is the first step in building your
foundation. It is best to first design the main spreadsheet. The main
spreadsheet consolidates data received from all steps and performs
centralized calculations. By using global variables, you may not have to
modify the local spreadsheets at all. The following approaches will start
you on the right foot for designing a maintainable spreadsheet.

Group Logically Related Information


Design the spreadsheet as neatly as you would a form. Related information
should be logically grouped together for presentation. Looking at the form
below, you can see the type of data being presented or requested from the
user.

Obviously, the data being gathered is contact information. This type of


logical grouping should also be applied when creating the spreadsheet.

62 Ultimus User’s Guide


Effective Design of Distributed Spreadsheets

Leave Room for Expansion


As you develop and deploy your workflow processes, interpreting the data
collected will be an essential part of enhancing the way you do business. In
many cases, you will need to expand your process to gather more data.
Unlike the forms, where additional controls can be inserted at most any
position, spreadsheet cells are fixed. It is best to leave unused rows to allow
for possible future data elements, such as phone extension, e-mail address,
and birthdate in the illustration below.

Use Spreadsheets to Handle Exceptions


Ultimus provides a very powerful event conditions table to bypass or direct
the flow of a workflow process. Actions are determined based on the
defined conditions whenever an event occurs (see the Ultimus Designer
manual for more information on event conditions tables). Although you
can specify up to 255 workflow variables as columns of the event
conditions table and 250+ rows of actions to perform, it is much more

Ultimus User’s Guide 63


Effective Spreadsheet Design

effective to use the spreadsheet to handle exceptions. Consider the


following example.

Step 3 of the workflow process will be activated if the Total >10000,


Region = South, Product = ISDN, and Approval = Yes. This simple
example can be reduced to one condition by simply using the spreadsheet.

By using the spreadsheet, you can make evaluations and test conditions.
Using the formula in the figure above, we can now reduce our event
conditions table to a single evaluation, as shown below.

64 Ultimus User’s Guide


Effective Design of Distributed Spreadsheets

Using the spreadsheet to handle exceptions also provides the following


benefits.
• Reduces the number of evaluations the Workflow Server must
perform during runtime, thus improving the speed of the Workflow
Server.
• Reduces the number of workflow variables or columns of conditions,
making the events conditions table easier to read and manage for a
workflow designer.
• Debugging of conditions can be done within the spreadsheet without
simulation or executing live incidents.
This method does not have to be limited to event conditions. In many
cases, the spreadsheet can also be used for any of the following (as
opposed to using scripts or recordsets):
• Enable and disable controls on the form
• Enable and disable the Send and Return buttons
• Spreadsheet and data lookups (for more information, see the
“Avoiding Spreadsheet Bloat” section).

Use Consistent Methods to Name Variables


Ultimus makes it easy to declare workflow variables simply by naming a
spreadsheet cell. If the designer declares a spreadsheet cell as a global
variable, data is automatically transferred to all steps within the same cell
position during execution. When creating variables, use the same name and
label as form fields. If you have a field on the form called “Request Date,”
a logical name for the workflow variable should be “Request_Date.” This
is especially helpful when training flobots, working with event conditions
tables, and simulating your workflow.
Guidelines for creating variables:
Austin wants to insert an
example here. • Always create a label beside each variable you create. The label can be
above, left, right, or beneath the variable. The most important thing is
to be consistent throughout the processes with whatever method you
choose. Above or left are the most common choices since Ultimus
provides an easy way of auto inserting labels when creating variables.

Ultimus User’s Guide 65


Effective Spreadsheet Design

• When creating a non-global main spreadsheet variable or local


spreadsheet variable, identify the spreadsheet location in all steps so it
is not mistakenly used for another local spreadsheet variable.
• Example: If you create a local spreadsheet variable called
“l_emp_comments” in cell B3, block cell B3 in the main
spreadsheet and other local spreadsheets so that it is not used.
This will help clear confusion in overriding variables and
grouping logically related information in the same spreadsheet
locations.
• Use letters to precede variable names describing the variable type.
• “g” for global variables (e.g., “g_employee”)
• “w” for non-global main spreadsheet variables (e.g.,
“w_recipient”)
• “l” for local spreadsheet variables (e.g., “l_emp_comments”)
• “e” for event conditions table variables (e.g., “e_total”)

Leave Space for Indexed Data


Controls requiring multiple inputs should allow links to multiple
spreadsheet cells. For example: multi-line edit fields, multi-selection list
boxes, and grid controls. Indexed data should allow for the maximum
number of possible rows of returned data. For more information on
indexed links, see the Ultimus Designer Manual.

Use Spreadsheet Formatting to Enhance Workflow


Use the many formatting options in Ultimus to add emphasis to your data
or to make your spreadsheets easier to read and more visually appealing. In
an expense report, formatting the figures as currency enhances the ability
to interpret the data. Formatting is of great use when exporting
spreadsheet data to a database. It ensures the data is in the correct layout
before it’s written to the database. Entering June 22, 2000 in a form is
represented as 36699 within the local spreadsheet if the spreadsheet cell
were not formatted. Another example of the usefulness of formats is the
varying degrees of user input. If a user enters 6/22, 6/22/00, or 6/22/
2000, those dates can easily be formatted and presented to the next user in
a standard layout.

66 Ultimus User’s Guide


Effective Design of Distributed Spreadsheets

When formatting spreadsheet cells, keep in mind a cell’s format is separate


from the data contained in the cell. Spreadsheet cell formats do not
transfer from step to step. A good illustration of this is with dates. If a user
enters a date in a form, what is actually stored within the local spreadsheet
is the serial number. Formatting each local spreadsheet must be done
individually. Spreadsheet formats can be set for an individual cell or cell
ranges. Spreadsheets can also be copy/pasted to reduce the design effort
(see Chapter 5, “Reducing the Design Effort,” for reducing design time
when setting spreadsheet formats).
In addition to previously defined system formats, custom formats can be
entered for any spreadsheet cell.
• Available system formats for dates for example do not include a four-
digit year. You can customize the predefined system format from “m/
d/yy” to “mm/dd/yyyy” if your database table has constraints
requiring dates to be in that format.
• Another widely used custom format is simply using the “@” symbol.
Any spreadsheet cell(s) formatted with the “@” symbol stores all data
as text within the spreadsheet. This format is useful when entering
account numbers or codes. If a user enters 004568 as an account
number, by default the spreadsheet would store this value as 4568
without the leading zeros.
Note: Although formatting makes your spreadsheet easier to read, all
formatting contributes to the overall size of the spreadsheet. The amount
of increase is not predictable, but discretion is advised whenever
possible.
All spreadsheet formats are described in the “Spreadsheet Formats”
document on the Ultimus Installation CD.

Using Formulas
Spreadsheets should be used to perform calculations and display results
within the form. This allows you to design intelligent forms. In addition,
expressions can be evaluated within the spreadsheets to further enhance
the Workflow Server’s ability to route tasks to appropriate steps within the
workflow process.

Ultimus User’s Guide 67


Using Formulas

Where To Use Formulas


Formulas are used in both the local and main spreadsheet. Local
spreadsheet formulas are used to display mathematical or logical results.
For example, in an expense report, Accounting requires a description of all
miscellaneous expenses.

The miscellaneous field is linked to cell B4. The description of


miscellaneous expenditures field is linked to cell B8. The enable/disable
cell description of miscellaneous expenditures field is cell B7. By default, if
the enable/disable cell is set, the control is enabled when the spreadsheet
cell contains a 1 and disabled when it contains a 0. The spreadsheet image
below contains the formula “=IF(B4>0,1,0)” for cell B7.

68 Ultimus User’s Guide


Effective Design of Distributed Spreadsheets

When miscellaneous expenses are entered, the description field is enabled


and requires the user’s input. Otherwise, the description field is disabled..

How Formulas Are Interpreted


Local spreadsheet formulas are evaluated in memory on the Client system
during runtime each time the spreadsheet is updated. Main Spreadsheet
Formulas are evaluated on the Workflow Server once the task is submitted.

Using Formulas Carefully


Use the following guidelines when working with formulas.
• If a form control is linked to a local spreadsheet cell that contains a
formula, any data entered into the control is not transferred to the
local spreadsheet. Only the result of the formula is contained within
the spreadsheet cell.
• When a formula is in a local spreadsheet cell, the data values is not
transferred from the main spreadsheet to the cell containing the
formula. The result of the formula is transferred from the local
spreadsheet to the main spreadsheet cell.
• When a formulas is in a main spreadsheet cell, the data value is not
transferred from the local spreadsheet to the main spreadsheet cell.
The result of the formula is transferred from the main spreadsheet
cell to the local spreadsheet cell.

Ultimus User’s Guide 69


Avoiding Spreadsheet Bloat

Avoiding Spreadsheet Bloat


Given the flexibility, ease of use, and straightforward implementation of
spreadsheets, it is easy to abuse the intent of spreadsheets. Remember the
goal to keep it small and simple.
Spreadsheets should be used primarily to pass information that is used to
control the process. They must not be used as the repository of mission
critical information. When spreadsheet data is stored within the Workflow
Server database, it is stored in binary format. The binary format does not
allow users or other systems outside of Ultimus to access this data for
reporting purposes. Any information that must be stored for historical
purposes should be saved using an ODBC Flobot, recordsets, or
databound variables. See the Ultimus Designer Manual for more
information on saving data in databases.
The following should also be noted:
• Spreadsheets should not be used to store long database lookup
information. Lookup information only increases the size of the
spreadsheet, which directly affects performance of loading forms and
database transactions by the workflow server. Only the selected
value(s) should be stored in the spreadsheet. If a combo or list box is
used, short lookup lists can be stored within the local spreadsheet.
Lists consisting of less than 20 items are suitable. Ideally, lookup lists
should contain items that change infrequently. This limits the amount
of change to the workflow process. If the list changes frequently, the
designer is forced to re-install the workflow process any time the list is
updated. The best way to handle this situation is to keep the list in a
database which is linked to a combo or list box.
• If a list is only used in a specific step of a process, the list does not
need to be generated or transferred from step to step. You can simply
create the list in the local spreadsheet of the required step and,
therefore, minimize the size and amount of data transferred to other
steps within the workflow.
• Workflow variables used explicitly for event conditions or step
properties do not have to be global variables. Otherwise, data is
transferred from step to step unnecessarily. See the “Global vs.

70 Ultimus User’s Guide


Effective Design of Distributed Spreadsheets

Workflow vs. Local Variables” section in Chapter 4, “Using Pre-


Defined Workflow Variables Effectively.”

Ultimus User’s Guide 71


Avoiding Spreadsheet Bloat

72 Ultimus User’s Guide

You might also like