Anadi Misra, Anil Chopra and Sanjay Majumder
As the old saying goes, 'experience is the best
teacher', meaning all theory is waste till it's put to practice. Last month,
we took you through workflow automation strategies with the help of a fairly
simple example from a BPO company. This time we're actually putting the theory
into practice and taking you through setting up some commercial as well as Open
Source solutions for workflow automation and business process management. The
concept of workflow automation is nothing new. In fact, just about every
organization already has some amount of automation already in place. A small
organization receiving customer orders via email has already done some amount of
workflow automation. The orders come through email and are forwarded to the
accounts people, who put it into the accounting application, raise an invoice,
and mail it back to the customer. A larger organization would probably deploy
ERP to handle the same job because it's done at a much larger scale. So
what's the need for a workflow solution you might ask? In the first case, the
workflow automation is completely ad-hoc. You have email in place, so you're
using it to speed things up. In the latter case, while ERP definitely helps
automate, how do you ensure that all the processes in it are adhered to? How
well is it being monitored? Is there an escalation procedure put in place to
ensure that the processes are being followed? Can you pull out individual
productivity reports that tell you where the bottlenecks are? Chances are that
at least some of these things are not possible with your current setup. That's
where a workflow solution comes into the picture.
There are several different types of workflow solutions
available, for organizations of all sizes. For instance, if you already have
Microsoft Exchange or Lotus Domino, then both products allow you to establish
simple messaging based workflow solutions. If the organization has several
different applications working across various divisions, and you'd like to
establish communication between them, then you'd probably use BizTalk Server
to establish that workflow. If you already have some enterprise business
applications running, but need to monitor them closely and ensure that the
processes they've automated are enforced and run smoothly, you could look at
OmniFlow. These are all basic examples, which in no way mean that those are the
only capabilities of the products we've talked about. They're just a few
scenarios that they're capable of handling. The value of a workflow solution
is determined by how well you can map your business processes to it. Will the
workflow solution help you to define the process and create a logical flow for
it? How much coding would be required to link the various steps? Would you need
to recruit developers especially for the job? How much would the workflow
solution cost? And more importantly, how much of a change would you need to
bring into the workplace to use it? These are just a few questions you need to
ask when choosing a workflow solution. In this story, like we said, we've
actually tried out various workflow solutions, both Open Source as well as
commercial to see what it really takes to implement workflow in the office.
Choosing a workflow
solution
Steps involved in modeling automated workflow in your
organization, before implementing it 'live'
Business Process Management (BPM) and workflow automation
have proliferated into many organizations today. BPOs, banks and other financial
organizations, and even production houses have all either exploited these
technologies for their benefits or are transiting towards them. BPM and workflow
might seem similar at first glance, but a careful analysis reveals the
differences between the two approaches. BPM encompasses the analysis of the
business process both in its current state and its possible developed stage,
i.e., as it is and as it will be. The exercise mostly precipitates into
developing more efficient processes or integrating technology into certain areas
to improve the overall productivity of a system. It includes manual activities
or processes and represents the conceptual level of the enterprise while keeping
the technical aspects segregated from the entire exercise. Workflow modeling on
the other hand is more inclined towards the technical aspects of implementing an
automated model for existing tasks or processes. It focuses primarily on
processing digital office or business documents and does not consider manual
processes or facilitates at the conceptual level of decision-making. It provides
assistance in these activities.
Analyze your business process
Major factors that affect this exercise are complexity of the
existing system, the environment in which the proposed system will work, and of
course the costs involved. Complexity depends upon the various sub processes
outlined to complete a business task. It doesn't simply mean the intricacies
of the existing system but a broader perspective encompassing the optimal
utilization of resources, processes, and even users along with the system. The
environment generally includes the existing infrastructure in place. This means
that choosing a solution can only be done after the business requirements have
been finalized and questions like what needs to be automated; who are the end
users involved in the system; where and when the activities will take place; and
cost factors such as ROI have been analyzed. Only then can the right workflow
model be chosen.
Identify requirements and the
target users
Bringing in the end-user during identification of the solution that
best suffices your needs is a good option. This is very important as it gives a
better picture down to the workers' level.
The important questions that need to be answered over here
are which end user receives what information; what action succeeds the receipt;
how should this information be utilized; is there any scope of improvement in
the way the information is utilized. Analyzing user requirements gives a more
discrete view of which tools will be best suited.
Change management
A workflow solution has to be able to seamlessly integrate into your
existing IT infrastructure. Thus the scalability and adaptability with
heterogeneous environments is a desirable quality for any workflow or BPM
solution being implemented. Despite having an infrastructure in place, there
might still exist processes or systems that require a complete change or make
over to either increase the productivity or provide a more centralized
architecture to the existing system. There can be two approaches to this, to
re-engineer the entire process (the classical monolithic approach of
development) or to introduce the new system in phases.
Bringing in a change to existing system has its own
challenges; particularly the cost factor becomes one of the most important
metrics here, as an organization might want to first be reassured on the
perspective gain from the new system and particularly the period after which the
organization recovers the cost incurred. In other cases, change might be desired
to improve or centralize the organization structure itself for efficiency
purposes. For example a bank might decide to proliferate operating branches in a
geographical area and concentrate a major chunk of the processing in a single
centralized office for that particular area. Whatever be the reason industry
experts would always accept the fact that this remains one of the most typical
stages in an implementation till date.
Patterns of
an automated workflow process
During the stage of charting out the anticipated process, three patterns of
workflow implementation are available. The Independent pattern is one in which
each component of the workflow process is completely independent of each other.
In such implementation processing, any component is independent of the other.
This pattern can be applied in scenarios such as processing requests for loans,
wherein the evaluation of limit and verification of the applicant can go
independently. In the Sequential Pattern, each work component is dependent on
the preceding component. In this case the preceding component controls the
workflow through subsequent components. The scenarios where such a pattern can
be employed are workflows addressing requests by an employee from his immediate
seniors or from another department. The third pattern is Interdependent or
Network pattern in which each component of the work is dependent on one or a
number of other components being completed. In this case the preceding
components control the workflow through subsequent components. A process for
creating weekly roster for employees within a particular process in a call
center is a scenario where such patterns can exist. The process finalizing the
roster would be dependent on processes for forecasting call flow, process
calculating number of employees available in the coming week, process scheduling
the login hours and break schedules for various teams etc. Once these steps have
been performed, we have enough useful information to look into the available
products and choose the one that would provide the best solution.
Workflow products and technologies
There are many commercial and Open Source workflow solutions
available. But while choosing a solution, you also need to be clear about what
you need. Is it a tool for BPM (Business Process Modeling) or WfM (Workflow
Management).
Microsoft Exchange for instance, is a messaging and
collaboration server. It enables sending and receiving messages in the form of
electronic mail and other forms of interactive communication. It can operate
with clients such as Outlook, Outlook Express, etc. It is also useful in
implementing message based workflow implementations. We've given a sample
application on this platform in this story.
Lotus Domino is another product on the same line. This also
provides a message driven solution for workflows. Microsoft SharePoint is
another product that can be used for workflow automation. It's basically a
portal application that provides features such as content administration,
document repository, message board and e-mail notifications.
Other workflow solutions include PDF Workflow technology,
developed by Oce of UK, which is based on Adobe Acrobat. It's basically an
implementation of a document/image driven workflow. The obvious advantage is the
reduced transfer time achieved due to the usage of PDF files.
Some vendors have also implemented workflow solutions based
on wireless/mobile technologies. For example, Intela Trac developed by SAT Corp
is industry workflow automation software used on rugged mobile handheld devices.
On the Open Source platform, there's Enhydra Shark, which is developed in
Java. It complies with WfMC (Workflow Management Coalition) and OMG (Object
Management Group) specifications. You can integrate this solution with a Swing
Application or a Java Web application also. Another similar product is Bonita.
Omniflow is another BPM solution, which keeps you away from
the hassles of programming while implementing a solution. Plus, it can be
integrated with your existing ERP infrastructure and other existing automated
business processes.
Implementing Workflow in Exchange
2000
We setup a simple leave application process on the server, design
the complete process, and automate the same
Exchange is one of the most popular messaging platforms,
but that's not the only function it can achieve. You can also configure
Exchange to automate small business processes in you office. It has an
entry-level built-in workflow system, which can be leveraged for automating
simple processes. Designing the whole workflow system, however, is a bit
complicated and would require both Exchange administration and some VB skills.
Here, we'll demonstrate how to configure a workflow system for a leave
application process. In this process, a user files a leave application in a
pre-defined mail form in the workflow system. Then, coding in the workflow
system processes the mail and fetches the required data from the mail form and
forwards it with a new mail form to the concerned authority for approval. If the
leave gets approved, it's forwarded to the personnel department and a
notification is sent to the user thereafter about his/her leave application
status. The entire workflow implementation is divided into two parts, server
side and client side. The former requires Exchange administration, while the
latter requires VB skills.
Configure the component service and set the roles for 'Can Register Workflow' and 'Privileged Workflow Authors' |
On the server side
Here, you need either a Windows 2000 or a Windows 2003 server with
Active directory, and a MS-Exchange 2000 server fully configured and running. We
used a Windows 2003 server for the job. To configure the workflow on Exchange,
you need to first create a username 'Workflow System', open this user's
properties and add it to the Exchange domain server group. Next, configure a
workflow engine on the Windows domain from Start>Programs>Administrative
tools>Component Service. Here, select Component Services>MyComputer>COM+Applications>
WorkflowEvent.Sink>Roles. You will get two components-'Can Register
Workflow' and 'Privileged Workflow Authors'. In both , add the user that
you just created by right clicking the user icon and selecting 'New' from
the context menu. After this, select the components folder under 'Workflow
Event.Sink' and select 'CdoWfEvt.EventSink.1' and then open its property
by right-clicking on it. On the property sheet, click on the Security tab and
check 'Enforce Component Level Access Check' and in 'Roles Explicitly Set
by Selected Item', check both 'Can register Workflow' and 'Privileged
Workflow Authors Object' and click on Apply.
After this you have to create a public folder, where you
will host your entire workflow system. To do this, start Microsoft Outlook and,
on the View menu, select Folder List. Then expand the public folders node and
then expand All Public Folders. Here right-click 'All Public Folders' and
select New Folder. Give the name for the new folder, such as Leave. This folder
will be used by your Exchange Workflow Engine.
On the client side
A sample workflow design using Exchange Workflow Designer for automating a leave approval process in an organization |
On the client side, you need MS-Outlook and Workflow Designer for
Exchange tool. We've given it on this month's PCQuestXtreme CD. The first
thing you need to do after installing it is to create a user interface, which is
basically an Outlook form for the user to fill in the leave application. To
create the user interface, open MS Outlook client and click Tools>
Forms>Design a Form. This will open a window asking to choose the type of
form you want to design. Select 'Post' from the list and click on OK. Now
you will get a design form on your MS Outlook screen. Here, from the tool bar
you will see two buttons 'Edit Compose Page' and 'Edit Read Page view' button. 'Edit Compose Page
View' is used by the person submitting the leave form to input data into the
leave fields. It appears when the leave application is created or composed. You
are shown this view automatically when you are designing a form. The text boxes
on the form provide values to the script used in the workflow. The 'Edit Read
Page View' is used by a manager to approve or reject the leave. It contains an
approval and rejection combo box in addition to the leave text box.
Creating Edit Compose Page View
Open the Outlook mail client and open the public folder that you have
created in the server configuration section. This folder will be used by the
workflow system. Then open a design form as mentioned above and click 'Edit
Compose Page' button from the tool bar and design the form according to your
needs. For example, for the leave form application, resize the message area to
create space for the Leave form fields. On the form right-click and click on
Control Toolbox, then add the following labels
Controls Properties
Number
(label) Caption: leaves
Next, add the following controls to the form to enter and
display the leave values (number of leaves that one needs to avail). To modify
the associated properties of the controls, right-click the control and then
click on 'Properties'. On the Value tab, click on the 'New' button to
specify a user-defined field that the workflow script can use as a reference.
Controls Properties
Leave textbox
Name: No_leave
Type: Number
Submit checkbox
Name: Submit
Type: Yes/No
Format: True/False
On the submit property sheet, Check 'Set the initial
value to this field' and set 'No' as the default value.
Creating Edit Read Page View
In order to create the Edit Read Page view of the Outlook form, Go to
Edit Compose Page view of the form, select and copy all of the controls you
added to the form. Then click Edit Read Page and resize the message area to
create space for the controls, and then paste them in place. Arrange the pasted
controls according to your need and add a combo box control to the form. Then
right-click the combo box control and click on 'Properties'. Click 'New to
set a user-defined field and set the properties shown in the following
Property Value
Name
Approved
Type
Yes/No
Format
Yes/No
List type
Dropdown
Possible values
Yes;No
Initial value
No
Once you have finalized both forms, you need to publish
them to the public folder and make them available for your workflow system. Do
this by going to the Tools> Forms in Outlook and select 'Publish Form
As'. Here, specify the form name and click on Publish.
Note: The name you provide is the name that the users see
when they choose a form to post in the workflow public folder. We've called it
'Leave Application Form'.
Go to the folder list and right-click on the folder you
want to add the workflow in, and click on Properties. Then in the 'When
posting to this folder use' selection box, select the form you published above
(Leave Application), and then click on OK. With this, your form design part is
over. Next comes the coding to make the process work. Before that, the developer
has to plan how the workflow of a particular process needs to be automated by
drawing a workflow process on a piece of paper. In this, the developer needs to
visualize where to add code that will extract data from the mail forms and
process it and then decide where to send the processed data. Once you're ready
with the plan, use Microsoft Workflow Designer for Exchange to design you
workflow process. In our case there were only three elements in the workflow
design-Draft, Submit to manager, and Approved.
Launch Workflow Designer from Program Files>Workflow
Designer for Exchange>Exchange Workflow Designer. On its interface, go to
File>New Workflow Project. Give your project a name and enter your Exchange
Server's name or IP address and public folder location for leave applications
in the location text box. This would be of the format
http://Your-Exchange-Server's-IP/Public/leave application. Click on OK and
you'll be asked to provide a username and password. Give the credentials you
created for this folder in the server setup section. After authentication, you
will get a design window where you have to draw the diagram of your workflow
system. Here, go to the diagram menu, click on Arrange Diagram, and then click
on Vertical. Then right-click the design window and click on Zoom and then click
on 'Zoom to Fit'. Initially, in the diagram window, you will see Item
Created and Delete object. You have to design the process between these two
states.
Adding States to the workflow
diagram
States are the various stages of your workflow processes. You can add
states to the workflow diagram representing each stage through which an item
might pass during processing. In our example, the states used in the leave
application workflow diagram are: Draft, Submit to Manager, and Approved. You
can drag and drop these state objects form the tool bar. Create the states
according to the diagram of the leave process in this article.
Adding Transition actions to
States
Transition is basically a line connecting the states. This is where
you have to add code for actions like Submit or Reject. These establish
relationships between the states in the workflow and also provide a place to add
the script for automating the workflow. In addition, workflow actions can be
used to evaluate conditions and to trigger scripts that automate your workflow
process. To add an action, just select the Transition actions from the tool bar
and draw a transition between the states that you have created from your
process. Let's see how you can add code to the transition using this leave
application example.
You can divide the code in two segments-Shared script
procedure and user-defined script. A Shared script procedure is created on the
Shared Script tab in the Workflow Designer. Scripts in the shared script tab are
common library of script routines. These procedures are used frequently in all
states. When you plan to use a procedure or function in your workflow process,
you create it once on the Shared Script tab and then call it from the Condition
Expression text box and from the Action Script Procedure text box.
This condition expression is the first script, accessed by
the workflow engine in response to a given workflow action. By default, the
condition expression returns a value of True. You can modify this value by
typing 'False' in the Condition Expression scripting box, creating an
expression, or calling a function from the Shared Script tab to perform the
task. User-defined scripts are written by the developer to perform certain tasks
in the workflow. To create a procedure or function on the Shared Script tab,
click Process List, and select the workflow process that you are working on.
Then in the Workflow Process pane, select the Shared Script tab. Here create
procedure, including Sub and End Sub tag.
To complete
the leave application example, we have added the action conditions, and script
specified in the following procedure. This script calls user-defined functions
specified in creating the Shared Script procedures. On the diagram, select the
Submit to Manager State, and add the transition. Instructions for setting the
transition properties can be accessed at http://forums.pcquest.com
under the current issue.
The procedures used in this example rely on each other.
When using the example script, be sure to verify that all parameters and
dependent functions exist in the workflow script.
Script such as Submitleave and Approveleave are
user-defined functions which is used to submit leave applications to the manager
and then the other script deals with accepting or rejecting the leave. You'll
find the code for these also on the PCQuest online forum.
Activating the workflow
Once you're done with the coding, you have to activate the code in
the workflow system. For this, go to properties of the leave application project
and select the Default workflow property. Select the process list that you want
to add in this workflow folder. Then on the same property sheet, set
workflowEnable=True. This will activate the code written in the designer to the
exchange workflow engine.
Using the workflow process
Now a user in the organization can file his leave application from
their Outlook client itself. The leave folder from the Exchange Public folders
will automatically appear on every user's system. Go to this folder and click
New to display the leave Application form. Enter the reason for leave in the
subject field. Fill in the number of days for which you'd like to have leave
and check the submit check box for your manager's approval. An e-mail message
will be sent by the workflow system to your manager. When the manager opens the
mail, then he'll just have to accept or reject the leave. In both cases, the
notification will be sent to you by the workflow system.
Implementing Bonita
An Open Source workflow system
Bonita is a J2EE-based Open Source workflow system
application, which allows you to execute, monitor and coordinate the flow of
work in an organization. It is completely browser based and can be installed on
both Linux and Windows. Bonita can be used for mainly two kinds of processes.
One for controlling and automating processes to make sure that appropriate
policies are enforced for software delivery. Second, to review production
processes, which helps users in doing their day to day work on time.
Requirements
We simply installed Bonita on a Windows XP machine. You'll first
need to download the JOnAS Application Server (JOnAS4.6.3-Tomcat5.5.12). This
can be downloaded from http://forge.objectweb.org/project/download.php?group_id=5&file_id=5017.
Next you need JDK version 1.4, which can be downloaded from http://java.sun.com/.
Then you need a database to save your workflow process data. Bonita supports
databases like mysql, postgres and Oracle, but if you don't have one, then
JOnAS Application server has an embedded database called hsqldb. Using Bonita
with this database doesn't require any configuration. You'll also need
Apache ANT, which is a JAVA based that can be downloaded from http://ant.apache.org/index.html.
Lastly you need Bonita, which can be downloaded from http://bonita.objectweb.org/html/Download/index.html.
We also gave a copy of it on our last month's CD.
Installation
Design workflow on Bonita by selecting the 'Original process instance' under the 'Project Manager' Window |
First install JDK 1.4 and set its environment variable to JAVA_HOME =
(eg: c:\jdk1.4\). Next unzip Apache ANT file, apache-ant-1.6.5-bin.zip and copy
the unzipped folder to c:\ and set
an environment variable ANT_HOME=(eg: c:\apache-ant-1.6\). Next run the JOnAS
installer on your machine, which will automatically detect your JDK path and ANT
path and will install the Application server on your machine. Then create
another environment variable JONAS_ROOT and set its value to (c:\JONAS_4_6_3\).
Finally, install Bontia. Unzip the Bonita workflow system and copy the unzipped
folder to c:\ and set its environment variable to BONITA_HOME - your Bonita home
install directory.
Configuration
First you need to configure Bonita with the JOnAS application server.
To do this, open a command prompt window and go to the Bonita home directory.
Here open the .ant.properties file and set the value of your hostname and web
port on which you want to host the Bonita workflow system. Then on same
directory issue this command “Ant config”. This will configure basic stuff
for Bonita on the JOnAS application server. After this you have to configure the
database of Bonita. If you are using the JOnAS embedded database then you
don't have to do any thing. Otherwise for other databases, you have open the
c:\JONAS_4_6_3\conf folder. Here open the config files for your favorite
database (Name_of_Database.properties) file. Open this file in Notepad and fill
the data source configuration according to your setup. Then you have to copy the
database driver jar file to the c:\JONAS_4_6_3\lib\ext folder. You can get the
latest database jar driver from your database vendor's site. Then you have to
configure it on your application server with your database. Open the
c:\JONAS_4_6_3\conf folder and open “jonas.properties” file. Add the bonita
datasource name: jonas.service.dbm.datasources
Then in the same folder open another file c:
\JONAS_4_6_3\conf\a3servers.xml and set the hostname value (localhost by
default) at line: server id="0" name="S0" hostname="localhost".
This value must be the same as what you've defined in BONITA_HOME\.ant.properties.
Next open JONAS_4_6_3\conf\carol.properties file and set the value of jrmp URL:
“carol.jrmp.url=rmi://localhost:1099”. Make sure that the host name and port
name values must be the same as what you've defined in $BONITA_HOME\.ant.properties
file for "bonita.host" and "jrmp.port" properties. Then open
JONAS_4_6_3\conf\ jaas.config file and add the following lines
bonita {
// Use the resource dsrlm_1
org.objectweb.jonas.security.auth.spi.JResourceLoginModule
required
resourceName="dsrlm_1";
// Use the login module to propagate security to the
JOnAS server
org.objectweb.jonas.security.auth.spi.ClientLoginModule
required ;
};
bonita-policy {
org.objectweb.jonas.security.auth.spi.JResourceLoginModule
required
resourceName="dsrlm_1";
// Use the login module to propagate security to the
JOnAS server
org.objectweb.jonas.security.auth.spi.ClientLoginModule
required;
};
With this your configuration is over. Now you have to
compile Bonita so that it gets integrated with the JOnAS application server. For
this open a command prompt and go to Bonita home directory and issue the
'ant' command. This will compile Bonita with JOnAS. Now it's time to start Bonita with the application server.
For this, click Start>Programs> JOnAS>Start JOnAS (back Ground). Then
open a command prompt and go the Bonita home directory and issue the 'ant
initDB' command. This will initialize the Bonita environment. To access the
Bonita workflow system, open a web browser and type the URL
http://localhot:9011/bonita. On the
Web page, you'll see a list of all the project's processes and their status.
To see the detailed activity, click the project that you want to look for and
you will be asked for a username and password. The default user name and
password for administrator is 'Admin' and 'toto', respectively.
Working model of sample workflow process implemented on Bonita |
Using Bonita workflow
To understand and design workflow in Bonita, you need a JAVA
developer because you have to do a bit of coding. Bonita is divided in two parts. Working on the workflow
process is totally browser based, but managing or creating a workflow process is
done using Java applets. The applet allows you to design the process in a
graphical way unlike some other workflow designers. Let's see how to design a
process. From its Web interface, click on 'Manager' link. This will launch a
manager applet , asking you for admin user name and password. After
authentication, you can create new projects for your process. On this GUI
applet, you have three sections projects, To-do lists, and activity. In project,
you will be shown a list of projects represented as a tree. The tree shows the
detailed project instances in which users are taking part (only for
administrative project). Plus you can do operations like Active/Hide, terminate,
instantiate or clone of existing project. The
To-do list shows ready and anticipated activity of current project with
associate users, who are working on the project.
The activity in the to-do list is shown in two
colors-yellow and green. Yellow shows activity in ready state and green shows
activity in anticipated state. Coming to the activity section, it shows
executing and anticipated activity of current selected project. To try this out
create new project and instance. After creating the new project, you have to
create instances. Instances are basically processes running under a project.
This allows you to define small pieces of workflow process and then interlink
them together in the project. On double-clicking the instance, the manager will
launch a graphical tool to draw a business process model. On the graph-editor,
down left corner, you will have three objects, which allow you to draw process
activities. Plus the user can identify the workflow execution by means of the
activity's color changes. Here only you can integrate routing of activities to
other users or processes, if the activity is pending or not done. At this you
can add users to the process and assign them roles. Activity can also be hooked
to a subprocess or different processes under the same project using Java syntax.
This can also be used to write code for Bonita runtime to associate process to
activities.
Once you're through with the design part, you need to
instantiate the instances to start off. For this, select the project you have
created and right-click on it. Now from the context menu, click 'Instantiate
Project'. To use the created workflow system, just open the browser and type
in http://localhot:9011/bonita. You will be shown the list of projects that you
have created. Select the project that the user is associated with and it will be
ask you to enter the associated username and password who is authorized to
access it.
OmniFlow
An enterprise workflow solution that integrates with your existing
enterprise applications and provides a graphical tool for creating and modifying
business processes
The Omniflow Process Modeller and the Configuration Server Console show the status of the running process |
This is not just a workflow automation solution, but a
complete BPM solution. The product
let's you create and modify business processes without any programming
efforts. Designing business processes is very easy. While drawing your business
logic, it rapidly automates the process, thereby reducing the deployment time.
You can design your own custom forms to fetch you business data and circulate
according to business rules in form format only. Plus, it also has a document
management system that runs parallel to the workflow system, which allows you to
have a document-based workflow system in place. The software's installation
depends upon the type of organization for which it's being deployed. We had a
chance to check out a basic implementation of the same on a Windows 2003 Server
with SQL Server 2000 as the backend database.
Server setup
In order to use OmniFlow, you need a server at least a dual CPU
machine with 2 GB RAM, and the storage depends upon the amount of data being
worked upon. It runs on Windows 2000 Server or above, and you also need
Microsoft SQL Server 2000 with service pack 3 for the database. It can also work
with Oracle and DB2. The software can also be configured as a multi-threaded
server, which can manage multiple instances of applications, such as a separate
Omniflow system if running in your organization. It also provides the
flexibility of starting and stopping registered applications, depending on the
workload. Its installation is fast and easy, but its configuration takes same
time, because you have to register each and every component of Omniflow with its
application server. However, you need to do this only once. After the
deployment, you don't have to do any more configurations.
In the User Mapping section of the User Management tab, you can map roles in your workflow process to users in Shark |
Designing a process
OmniFlow has a graphical tool to design business processes. Drafting
a process is done in a chart fashion with clear indication of task queues,
conditions and sequences in which tasks must be performed from initiation to
completion. A process manager can design the workflow processes with steps in
series or in parallel. Plus from here only, you can define all activities in a
process, the various processing rules, actions, work to be performed,
relationship, etc. With in this interface, you can view compiled reports on
business definitions in order to check the correctness of definition.
OmniFlow Process Manager
OmniFlow has an in-depth process monitoring system, which gives you a
user-friendly desktop for administration and monitoring of all business
processes from a centralized place. From here only an administrator can control
and refine its business process. In addition you can generate various levels,
which helps you evaluate the level of performance of each and every component of
the process.
Process client and WorkDesk
In order to user the workflow, users can access the workflow from a
Web browser only.
It allows users to log-in to their respective queues, based
on assigned rights, and process the pending work-items in the selected queue. It
provides some standard tools like Check-Lists, Exceptions, Form View, Document
View, Actions, etc. These allow the user to process the work-items more
resourcefully. To remind users
about work-items that need to be completed in a day, it has to-do lists. These
notify users about their pending work-item for a particular day.
Enhydra Shark
An Open Source workflow engine that can be deployed in diverse
workflow implementations
Enhydra Shark is an Open Source workflow engine written in
Java. The engine can be deployed to various types of workflow implementations.
You can use it in a CORBA-based implementation, as a server side engine for a
web based workflow, as it provides libraries for implementing JSP clients or if
you are designing a Swing based implementation for your workflow, you can
integrate the engine in your Java Swing Application. The engine uses XPDL (XML
Process Definition Language) by WfMC for defining the workflow processes. It can
be used in Workflows for both SMBs and Enterprises.
For installation, it requires Java to be pre-installed on
the system and can be installed as a CORBA service. The installation is simple,
as the only configuration it requires is to choose one option from the available
set. We chose the option for installing without any services.
Shark can be configured with most database servers
available by un-commenting the database connection string of your choice in
Shark's configuration file.
Let's deploy
We will look into deploying a sample workflow application implemented
in Java. The process is for reimbursement of travel expenses to an employee. The
process outline is that an employee sends a claim to the manager who in turn can
approve or reject it. If approved, the claim is forwarded to the account manager
for reimbursing it.
Create a package
First create a process definition, which has to be a standard XPDL
schema. We used Enhydra JaWE to create the same.
A Windows executable for its installer can be downloaded
for free from the URL http://forge.objectweb.org/projects/jawe.
Run the application after installation and create a new
package by clicking File>New. By default the package is named “newpkg”.
To edit properties for the package, right click on it from the navigator window
on left and click Properties from the menu. In the package dialog that opens,
change the Id field to “trv_exp_reim_pcq”, Name field to “TravelClaim”
and choose Non-Blocked for graph conformance drop down list. Also under the
Script heading, populate Type field with “text/java”.
You can also edit additional information such as version,
author name, etc from the Redefinable Tab on the same dialog box. Save the
changes by clicking on the 'tick mark' on top left of the dialog and close
it.
The XPDL schema of our sample workflow process, created using Enhydra JaWE |
Create a process
Create process by clicking on the processes button on the toolbar.
Right click on process from Navigator and again choose properties. In General
Tab populate name with “Travel ClaimReimburseProcess” and choose public
access level from the Access Level drop down list. Our process involves
communication between three types of roles, Employee, Manager and Accounts
Manager. To create these three as participants go to the participants tab and
click on new button, edit its name to Employee. Similarly add participants
Accounts Manager and Manager. We need two process variables cliam_amount of type
Integer and initial value zero, and Boolean variable Approve with initial value
false. Go to the Workflow Variables and add these variables by clicking on new
button on the variables tab and editing specified properties from the dialog box
that opens.
After defining the participants and variables, click on the
Activity tab to add a workflow activity called send_claim. Here choose the
performer as Employee, Start Mode as Manual, and the Finish Mode as Automatic
from the respective drop down lists. Go to the Extended Attribute tab, populate
the name field with “Variable ToProcess_UPDATE” and the value field with
claim_amount. Similarly create activity process_claim, whose performer is
Manager, start mode is automatic, finish mode is manual, and the extended
attribute attribute name is “Variable ToProcess_UPDATE” with value Approve.
We now need to define “Transitions” from one workflow
activity to another. Go to the Transitions Tab and click on new button. Populate
the name field with “toTransport”, choose source as send_claim in the From
drop down list and approve_claim from the To drop down list. Similarly define a
transition “toReimburse” from source approve claim to destination
reimburse_claim, here provide condition “approve = = true”.
This completes our modeling of the process. Save the XPDL
schema to the disk and exit JaWE.
Application to implement
activities
Create three java classes SendClaimAgent for activity send_claim,
ProcessAgent for activity process_claim and ReimburseClaimAgent for activity
reimburse_claim. Since Shark provides a JavaClassToolAgent for implementing
ToolAgents in Java, all these three claases are to be inherited from this class.
For this you need to include the following three jar files in the
folder to your system classpath: sharkinternalapi.jar; sharkcommonapi.jar and
sharkclientapi.jar. After
implementing these classes we are all ready to run our sample process in Enhydra
Shark.
Running the process
Open shark.conf from
shark to include the path where the Java Classes have been defined by editing
ToolAgentPluginDir to the folder where these java classes are present. Save and
close Shark.conf file. Start shark admin by executing runA.bat from
folder.
Go to the "Package management" section, press
"Load", select "test-JavaScript.xpdl" and press
"Load". Then double-click on the XPDL schema from its saved location.
Wait while shark loads the package into memory, and press "Exit". Then
go to User Management to add users. Populate User Group with “EmployeeGroup“,
user name with emp, password as emp and provide arbitrary name and last name.
Similarly create a user of EmployeeGroup for Transport Manager. To map these
users to roles in the schema click on Mapping Tab under User Management, click
on Employee on Left Pane, and user emp on right pane and then click on Apply
Button. Similarly map role Transports Manager to the other user created.
To map the activities to Applications from the
"Application mapping" section, press "Add" button. In the
left panel Select "send_claim", and in the right panel select "org.enhydra.shark.toolagent.JavaClassToolAgent". Populate
"Application name" field in the right pane with "SendClaimAgent".
Finally, press the "Apply" button. Similarly Map the activities
process_claim and reimburse_claim to respective java classes.
Now that everything is prepared for the process execution,
you can return to the "Process instantiation management" and press
"Instantiate" button when you select "TravelClaimReimburseProcess"
.
Execute runWH.bat from sharks bin directory, login as
employee choose emp from the User drop down list. You will see the emp worklist
item for send_claim appearing. Double click on the row or click on the check box
for the entry and click on complete button. Click yes when asked to update
process variables and enter the reimburse claim amount in the dialog box that
opens and click on OK.
Now login as Transport Manager from another instance of
worklist handler appliocation and similarly finish the activity process_claim by
updating process variable Approve to true. Switch back to Admin application and
go the Worklist Handler Section , choose the worklist item and click on complete
to complete the sample workflow process.
This was a very simple process to explain you the procedure
for implementing a workflow solution in Enhydra Shark. You can implement more
complex processes by provifding more appropriate schemas and Java Class
implementations for activities.