Title: Enhydra Shark Together Workflow Server and Enhydra JaWE Together Workflow Editor Workshop
1Enhydra Shark / Together Workflow Server and
Enhydra JaWE / Together Workflow Editor Workshop
2Basic Introduction to Workflow Technology
3Basic Introduction to Workflow Technology
- What is Work Flow technology
- What is Workflow
- What is Workflow Management System
- WFM systems support in three functional areas
- the Build-time functions
- the Run-time control functions
- the Run-time interactions with human users and IT
application tools - What is Workflow Enactment Service
- What is Workflow Engine
4Generic Workflow Product Structure
5WfMC and Workflow Reference Model
Interface 1
Interface 5
Interface 4
Interface 2
Interface 3
6Enhydra JaWE / Together Workflow Editor
7TWE Introduction
- Graphical application for XPDL Process Definition
Modeling. - Makes creating and editing XPDL easy.
- Uses swim lines to represent participants of the
process. - Every XPDL element has property panel for editing
element properties. - Final output of modeling process is a XML file
based on XPDL schema - XPDL created by TWE can be interpreted by any
XPDL workflow engine - Accomplished three main goals
- Graphical representation of process definition
- Export of process definitions to XPDL
- Import of any valid XPDL and its graphic
representation
8XPDL and TWE
- Package the top element of XPDL schema
- External package concept
- How does TWE support external package concept
- How to create new XPDL and to define package
properties in TWE
9XPDL and TWE
- Workflow Process Definition
- Graph and property panel representation of
workflow process definition in TWE - Start/End markers
10XPDL and TWE
- TypeDeclaration
- Standard XPDL data types
- Custom data types
- Package scope
- Problems with a scope - external packages and
application definitions - Shark solution to scope problem
- How to use it when defining variables
- How to define in TWE
- Participant
- representation of users/roles/system
- External package/Package/Workflow process scope
- Where to define - best practice
- How to define in TWE
- TWEs Special Arbitrary expression participant
- TWEs LDAP support
11XPDL and TWE
- Application
- representation of applications to be executed at
runtime - External package/Package/Workflow process scope
- Where to define - best practice
- How to define in TWE
- How to use it from Activitys Tool
- Formal parameters like a Java method parameter
definition - DataField
- Synonymous (workflow relevant data, variable)
- Usage within workflow (conditions, actual
parameters, ) - Data types standard/custom
- Scope
- How to define in TWE
- How to use it in conditions, actual parameters,
deadline expressions,
12XPDL and TWE
- Activity
- represents the unit of work
- generally associated with their performers and
application assignments.
13XPDL and TWE
- Different activity types
- Manual activity
- Tool activity
- Route activity
- Sub-Flow activity
- Block activity
- How to define in TWE
- Transition
- Link between two activities
- Can describe the condition to get from the source
to the target activity - Different transition types
- Conditional/unconditional transition
- Otherwise transition
- Exception transition
- Default exception transition
- How to define in TWE
- How does TWE validate graphical transition
insertion
14XPDL and TWE
- ActivitySet
- Group of activities and transitions inside
process - Executed by block activities
- When to use it
- How to define in TWE
- Extended attributes
- Necessity for vendor specific attributes
- Primary method to support vendor specific
extensions. - Defined by the user or vendor to express any
additional entity characteristics - How to define in TWE
- "simple" part of Extended Attribute
- "complex" part of Extended Attribute
- Can be defined for every main main XPDL entitity
15TWE GUI
- Split into several parts
- Main menu, main toolbar and info bar.
- 4 areas with components
16TWE GUI
- Components
- Graph
- displays the selected process or activity set
- Graph toolbar
- Participant manipulation
- Activity and transition manipulation
- Standard editor functions inserting, moving,
selecting and deleting - Double click, right click functionality
- XPDL View
- Text view of the selected element
- Highlighting
- Search function
- (Graph) Overview
- overview of the whole process graph
- easy way to navigate
17TWE GUI
- External package relations
- Relations amongst main package and its externally
referenced packages - Transient package pool
- Shows packages opened in Transient mode
- Add/remove Transient packages
- Copy from transient packages
- Navigator
- Hierarchical view of package and its main
sub-elements - Package tree
- hierarchical view of the whole package/XPDL
- Properties
- main details of selected element
- Search
- Displays references to the selected object or
search result - Results in hierarchical view
18TWE GUI
- Problems
- Displays information about problems in XPDL
- Possibility to easily navigate to the problematic
element - WfXML
- Communication with workflow engine based on WfMC
If4 - Uploading/downloading/updating XPDL)
- Menu Toolbar
- File (new, open, reopen, close, save, recent
files,) - Edit (cut, copy, paste, undo, redo,.)
- Package (validation, insert process, properties,
) - Process (properties, )
- External packages
- Settings (Language, Configuration)
- Help
19TWE Configuration
- Basic configuration file
- One property file per component
- Configuring TWE behavior
- Configuring graphical properties
- Possibility to switch between different
configuration/modes at runtime - Shark engine configuration
- WfMOpen engine configuration
20Possible TWE customizations
- Helping XPDL developers to concentrate on
business problem - Making XPDL modeling less error prone
- Workflow engine dependent customization
- special ext. attributes and their property panels
- set of XPDL features it does not support
- XPDL features interpreted in a special way
- Introduction of new activity types
- E.g. automated activities for sending e-mails
- customized property panel for entering all the
information - Special XPDL template for creating new workflow
processes - TWE can be easily customized in order to support
these requirements.
21Modeling XPDLs for Shark
- Packages script type element
- Tool activity with sys. participant performer
and start mode restriction - No activity and system participant restriction
- Type specifics allowed data types
- Application definition and ToolAgentClass
extended attribute - Deadlines usage of additional (system)
variables in expressions - PROCESS_STARTED_TIME
- ACTIVITY_ACTIVATED_TIME
- ACTIVITY_ACCEPTED_TIME
- Type Declarations and External packages issue
22Application definitions and tool agents
- Tool agent interface
- defined by WfMC
- Engine access to external system in a standard
manner - XPDL Application definition representation of
real application - like declaring a function in programming language
- this function is called by Tool activities
defined in the process flow. - Tool activities
- Provide information about the parameters to pass
to the application - Many different XPDL application can be mapped to
tool agent represented by the same Java class - Those application definitions can even They can
define different formal parameters.
23Deadlines, exception handling, transition
conditions
- Deadlines
- Defined for Activities
- A time until activity should be finished
- Workflow system periodically tests the deadline
condition - If deadline condition is satisfied, process will
follow the exception transition as defined in
XPDL. - Exceptions
- Special transition types to model it
- Modeling what happens in the case of deadline
- Modeling what happens in the case of exception in
tool agent execution. - Transition conditions
- Expressions made by the usage of variables
- Expressions evaluated at run-time
- Expression must evaluate in boolean value
- Used to determine if the transition should be
triggered or not
24Enhydra Shark/TWS
- Enhydra Shark / Together Workflow Server
25Introduction to Shark
- Workflow engine that executes processes based on
XPDL definition. - Completely based on standards defined by WfMC and
OMG - A library that can be embedded in
WEB/Swing/Console application, or it can be
deployed as CORBA service, WEB service, EJB
service, RMI service, - Supports automated, manual and mixed workflow
processes - Extensible work item allocation algorithms.
- Activities are automated through an extensible
system of Tool Agents - Human interactions are managed through work items
- Through a worklist API shark clients are able to
manage work items. - Fully transactional behavior with JTA support
- Can be used in a cluster scenario
- Easy change of DB used for persistence via DODS.
It includes scripts for creating tables for DB2,
HSQL, MSQL, MySQL, Oracle, PostgreSQL,
26Introduction to Shark
- A lot of possibilities to configure engine thanks
to its nice architecture - Each shark component has an API, and default
implementation(s) - Standard implementation simply replacable by the
custom ones - Even the kernel itself can be tuned-up.
- Default kernel does not use proprietary
extensions of XPDL (extended attributes) - Supports ToolAgent concept defined by WfMC.
- Comes with several useful tool agents already
defined - Supports deadline handling and XPDL exception
transitions - Possible callback to shark from its components
- Can use custom Java classes as variables
- Appearing of deadlocks is minimized thanks to the
DODS buffer transaction. - Supports XPDL definition update
27XPDL and Shark
28XPDL and Shark
- Process definition
- For each XPDL definition there is a factory that
creates process instances - Every process instance has unique instance Id
- Activity definition
- Created during process enactment, and based on
the flow and rules defined in XPDL - every activity instance has unique instance Id
- Variable definition
- Created during process enactment based on XPDL
definition - The same Id as in XPDL
- Assigned to process/activity context
- Value is changing in runtime through shark API or
during tool agent execution - Engine executes processes based on XPDL
definition - Engine interacts with the user that can update
process/activity variables, and complete
activity - Based on user input, variable values, engine
determines which activity will be executed next
29Shark architecture
- The architecture is divided into three main API
componentsshark client API, shark kernel and
shark plug-in APIs
30Shark client APIs - possibilities
- API for handling XPDLs
- Getting the list of uploaded XPDLs (and their
versions), upload, update, delete, retrieval of
XPDLs for the monitoring purpose (possible usage
from the client side to graphically show the
process flow) - API for obtaining the list of uploaded process's
definitions - API for obtaining various runtime and XPDL
information - Core API (OMG API and WAPI)
- Instantiating processes, aborting
processes/activities, retrieving/changing
process/activity variables, completing activity,
- API for deleting processes, checking deadlines
and limits, cache handling - Filter builder API
- Filters and OMGs WfXXXIterators
- Filters and WfMCs WAPI
- Why to use filter builders?
31Core client API (OMG API)
32Shark kernel
- Implementation of special core kernel API
- A glue that bounds client API implementations and
internal component implementations based on
provided configuration. - Handles the client requests by parsing XPDL
definition, communicating with internal
components and implementing its own logic to
achieve the goal. - The benefit of having kernel API
33Kernel processing
34Kernel processing (simplified)
35Shark plug-in APIs
- Mandatory plug-in components and their purpose
- Repository persistence component
- Instance persistence component
- Scripting component
- Optional plug-in components and their purpose
- Assignment component
- UserGroup component
- ParticipantMapping component
- ToolAgent component
- ApplicationMapping component
- EventAudit component
- Logging component
- Caching component
- Security component
36TWS - shark extensions
- TWS is shark extension that
- Implements advanced APIs
- Extends shark kernel to interpret extended
attributes - Brings more useful implementations of plug-in
APIs - Brings more useful tool agent implementations
- Most important additional functionality
- Possibility to use variables not defined in XPDL
- Possibility to have transient processes and
variables (even the ones not defined in XPDL by
the usage of special naming convention) - Possibility to specify that all activities should
not have special context, but to use the one of
the process (for performance reasons) - Possibility to specify a process or activity
behavior per definition. - API to find out the future and the past, and to
navigate through process based on its XPDL
definition
37Swing Admin process monitoring
38WEB Client worklist handling
39Worklist handler
- Application that enables a human workflow
participant to manage the work items which have
been assigned to them - Shark provides graphical Worklist Handlers
- graphical swing worklist handle,
- WEB based worklist handler application
- Worklist handlers able to access shark through
- POJO
- EJB
- WebService
-
40Assignment manager
- Whats the purpose of Assignment manager
- AssignmentManager 4 method interface
- Method to configure manager
- Method to obtain UserGroup API implementation
- Method to obtain ParticipantMapping API
implementation - Method to actually retrieve assignments for the
activity - Several assignment manager implementations coming
with Shark - StandardAssignmentManager
- HistoryRelatedAssignmentManager
- XPDLStraightParticipantMappingAssignmentManager
- How to handle XPDL, Participant mapping and
UserGroup information - How to write your own assignment manager
41Tool agents XPDL Application definition
42Tool agents definition of activity Tool
- The actual values for the application parameters
will be determined at run-time - We can consider such Activity execution as a call
to the function
43Tool agents how it works
- Shark kernel is passing workflow relevant data to
tool agent and expecting tool agent to update
some variables as the result of its call. - When XPDL is deployed into shark engine, and when
tool activity is about to execute shark kernel - gets the current value of variables specified as
actual parameters - in the case actual parameter is an expression, it
evaluates expression using current values of all
process variables and specified expression
interpreter - provides these values to a DefaultToolAgent (if
we do not use Application mapping) - DefaultToolAgent
- reads an ext. attrib. ToolAgentClass (from
Application definition) - delegates a call to appropriate tool agent
specified by this attribute - Actual tool agent
- reads additional extended attribute
- Executes tool agent logic using variables
provided by kernel - updates variable values.
- At the end, kernel reads-back the variables which
type is OUT or INOUT and updates process instance
variables.
44Tool agents
- How to write your own tool agent
- How to model XPDL to react upon some expected
errors in Tool Agents - Two approaches when implementing tool agent
- To expect a certain parameter at a certain
position - To search for parameters by the formal parameter
name from XPDL definition
45Callback from shark plug-in components to shark
engine
- In order to obtain more information required to
do their job, plug-in components can do a
callback to engine. - When doing a callback, components are using
engines client API, as any other client
application does. - Examples
- ToolAgent implementation can query shark engine
in order to set/get variables of some process
instance - ToolAgent implementation can query shark engine
in order to get Id of activity instance based on
the assignment Id parameter it gets as a
parameter - ToolAgent implementation can query shark engine
in order to get the information when process
instance was created - Assignment manager implementation can query shark
engine to get information about the user that
executed activity with a certain definition
46Shark optimization
- Switching-off unnecessary plug-in components
- Checking cache parameters (if not cluster
scenario) - Checking other shark configuration parameters
depending on use case - Check client application code
- How it handles user transaction
- Which shark APIs are used for which purpose