bonita j2ee workflow cooperative system miguel valdés faura jiap project 09/12/2003
TRANSCRIPT
BonitaJ2EE Workflow Cooperative
System
Miguel Valdés Faura
JIAP Project
09/12/2003
Agenda
• Bonita project introduction
• Basic organisation
• Awareness
• Advanced features
• Web services
• Bonita integration
• Current work
Bonita Project• Flexible Cooperative Workflow System
• Bonita is integrated in the ObjectWeb Consortium (Open Source Middleware).
• Bonita is Open Source and is downloadable in LGPL License.
• Bonita uses new JOnAS 3.3.1 version.
Short History• Started in 2000 inside the Motu Cooperative
plateforme• June 2001
– Beginning of development of version 1• Ejb 1.1
• June 2002– Development of version 2
• Ejb 2.0, CMP
• June 2003– Integration in the libresource platform– Port to Jonas
Context (1)• Types of workflow
– Production– Administrative– Ad-hoc– Cooperative
• Workflow Management System that allows coordination in a cooperative project
– co-engineer, co-conception...
Context (2)• Existing Workflows
– Isolation execution– Sequential execution
– Rigid model
EditionEdition
CorrectionCorrection
EditionEdition
MergeMerge
EditionEdition
ReviewReview
CorrectionCorrection
CommentsComments
Context (3)• Bonita offers a new workflow execution
model:– Execution flexibility based on activity
anticipation.– Interchange data flexibility
Edition Modification
Edition Review Mofification
Edition Review
Modification
...
Process
Execution
(1)
(2) Anticipating
Anticipable
Executing
Review
Objectives of Bonita
Supporting collaborative processes– Long running activities– Distributed teams coordination– Awareness
• Provide a WF engine– Simple– Dynamic– Flexible
Bonita J2EE Application
• EJB 2.x compliant and xdoclet code generation engine.
• User Authentication by Login Modules• JMS notification module• Web Interface with Struts framework, JSP and
JSTL pages• Different databases MySQL, Postgres...• J2EE Workflow Web Services• ...
The basics
• Process
• Activities (or nodes)
• Edges
• Users
• Roles
• External events
Process
• A process is the description of – a set of tasks or activities– the dependencies between tasks– a set of roles– a set of users participating to the process– the relationship between roles and tasks– the relationships between user and roles
Activities• Activities are used
– To represent tasks that have to be executed– To express synchronisation conditions
• AND-JOIN, OR-JOIN
– To express execution conditions• Automatic, Traditional, Anticipable
• Activities have– A role– A deadline– A state (initial, ready, anticipable, executing, anticipating, dead,
terminated,…)
Edges
• Edge are used to represent control flow dependencies between activities
• Edge have– A state (initial, active, dead)– A condition
• Expressed as BeanShell script
• Evaluated when the edge becomes active
• Edge are also used for basic data flow
Agenda
• Bonita project introduction
• Basic organisation
• Awareness
• Advanced features
• Web services
• Bonita integration
• Current work
Basic Organisation
ProcessSessionBeanProvides the Process Instantiation API
UserSessionBeanProvides the user API to
get information on Todo list and started activitiesproduce events on activities (start, terminate, ...)
EngineBeanHidden to userProvides the execution engine. Manage process states
and process changesAPI are also available as Web Services
ProcessSession Bean
• A process session bean provides the interface for– Creation of the process– Definition of nodes and edges– Modifications of properties
• A process is enacted immediately.
Process editor• Tool for interactive edition of the process
Process definition• A Web Interface is used for detailled definition
Process execution• Process execution is done by commands
– UserSessionBean implements commands and queries• Projects of a user• Todo List• Executing activities• Start/terminate/Cancel commands
• Process execution is controlled by a special session bean that implements the state machine (EngineBean)
The activity manager
• Client interface for process execution
• Provides– User projects– Todo list for a user– Executing activities
Agenda
• Bonita project introduction
• Basic organisation
• Awareness
• Advanced features
• Web services
• Bonita integration
• Current work
Awareness (1)
JMS notifications in workflow users definition and visualizationUser notifications:
Mail notificationsJabber notifications
Awareness(2)• The process editor provide a view of the state of the
process
Awareness(3)The process editor allows multiple users definition.
Awareness(4)Jabber Notification based in user preferences
Agenda
• Bonita project introduction
• Basic organisation
• Awareness
• Advanced features
• Web services
• Bonita integration
• Current work
Advanced features
• Anticipation
• Runtime process change
• Properties
• Hooks
• Process clone
AnticipationGreen activities are anticipable
Process changeThe process can be changed anytime during its execution
Properties
• Properties are data attached to– A process– An activity
• Process properties are the global data of the process
• Activity properties provide a basic data flow– Implicit propagation along the control flow– Properties can be used in
• Activity Scripts• Edge conditions
Hooks• Hooks are used to add automatic behavior to activities for
– Integration– Control– Automation
• Hook are scripts written in– Tcl, java or beanscript
• They are associated to the following events– Before start and after start– Before terminate and after terminate– Executing– On Cancel– On Die
• Before start and after terminate are executed outside of the activity transactional contextIf the before start fails, the activity does not start but does not
fail either... it can be retried later.• After start, On execute and before terminate are
executed inside the activity transactional contextFailure of one of the hooks makes the activity failed
• On Die and On cancel are used to take action in case of activity failureRecovery, programmatic compensation, instantiation of a
compensation process
Hooks
Process Hook vs Activity Hook
• A process hook will be executed for each activity of the process– Allows to specialized the process behavior
• An activity hook is executed only for the activities it is attached to
• Executing hook can be used for automatic activities
• A hook is implemented as a BeanShell script or as a Java class (must be deployed)
• The script has access to the current activity bean and to engine bean (change to the process execution status can be done)
Hooks Implementation
Process Clone• Clone is used instead of schema to instantiate processes• A Process clone is an exact copy of an existing process
except that– All activity and edge states are reinitialised– Participants to the project are not copied
• To use a cloned project the admin has to– set the users– recreate the user/role relationship
• No relationship between the copies
Agenda
• Bonita project introduction
• Basic organisation
• Awareness
• Advanced features
• Web services
• Bonita integration
• Current work
Web Services
• Powerful and easy integration that will enable more efficient business processes.
• You will easily integrate your software with other pieces of software.
• No need to worry about how each Web Service is implemented.
Web Services and J2EE
Proprietary Protocol
IIOP HTTP
Web service Container
Servlets
Business Partner or other system
Applets, JWSApplications
Business Partner or other system
Existing SystemERP System
Connectors
EJB’s
XML Parser
JSP, MVC Framework…
View generation Web Container
EJB Container
HTTPRMI
Client tier
Back-EndSystems
DB
SQL Web Services Technologies
Web Services Technologies
Computer
Bonita Web Services Architecture• Bonita Third Generation Workflow
Architecture based on Web Services.Server-Side
Business Logic
Struts
Server-SidePresentation
Web Services Client-Side
Presentation
Workflow information
Bonita Database
MySQL
Postgres
Oracle Bonita Definition component Bonita Execution component Web environment to define and control the workflow process
• 100% browser-based environment• We can use external Web Services and also
publish Workflow Web Services.
HTTP Request sent to SOAP server
HTTP Response from SOAP server
HTTPEncoding/Decoding
SOAPSerialization/
De-serialization
SOAP PackageXML
Method Call
Local Interfaces
HTTPView
generationXML Java
Parser
Bonita Struts Framework
Web Server
Business Partner
Server
Business Partner
Service API
(XML/SOAP)
Bonita 100% Browser-based
Bonita & Web Services
Integrating Bonita Web Services• Data translation and transformation
– Translating the results of the business service into XML
– Bonita XML Data Binding Serializer.– XML data binding offers a simpler approach to
working with XML
• Client Connectivity– Different kinds of clients connect to the web
services in a variety of ways: UDDI, WSDL, SOAP, ebXML.
– Multiple client views for one web service.
• The XML code returned to the client.
NodeLightValue
state
id
creatoridname
nameemail
role
id namedescription
…
node1 2
[email protected] admin The admin role admin
1
22
Bonita Web Services Sample
• A particular Bonita Web Service can be adapted to each user view.
Business Partner or other system
Session Bean
Transform XML
Servlet / JSP s
UDDI Registry
Register Servicein UDDI Registry
JAXR
JAXM, JAX/RPC
JAXP, JAXB
Locale Service and Service Descriptions (WSDL and/or CPP)
SOAP and/or ebXML request
Web service Container
Castor XML Data Binding
XSL/XSLT
Client Request
Bonita Client Connectivity
Agenda
• Bonita project introduction
• Basic organisation
• Awareness
• Advanced features
• Web services
• Bonita integration
• Current work
Bonita integration example
• Libresource Platform:– A modular platform for cooperative software
development– Virtual teams hosting and distributed
communities– Data sharing, coordination, awareness,
communication
http://libresource.loria.fr/
Libresource integration
Agenda
• Bonita project introduction
• Basic organisation
• Awareness
• Advanced features
• Web services
• Bonita integration
• Current work
Bonita State• Used in different projects
– KVM– Libresource– Coopera
• > 5000 downloads at Bonita ObjectWeb site.
• Bonita references at: TheServerSide, Apache, Freshmeat, Internet Global Congress...
• Stable execution engine
Current work• Short term
– Completion of MultiInstanction implementation– Integration in the LibreSource platform– New workflow administration web interface.– Hook editor – Import XPDL workflow files.
• Middle term– XPDL workflow model– Web Services orchestration: BPEL4WS– ...
XPDL Standard• Variety of different tools exists to define workflow processes • XPDL defines a common interchange format:
– transfer workflow process definitions between different products
• Separation between the development and run-time environments
Bonita & XPDL Standard
Jawe Definition Client
XPDL representation
Bonita Definition Client
http://bonita.debian-sf.objectweb.org/
Bonita Home Page