Title: Bonita
1Bonita
J2EE Workflow Cooperative System
- Miguel Valdés Faura
- Bull RD
-
- 08/03/2004
2Agenda
- Bonita project introduction
- Basic organisation
- Awareness
- Advanced features
- Web services
- Bonita integration
- Current work
3Bonita Project
- Flexible J2EE 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.5 version.
4Short 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
5Context (1)
- Types of workflow
- Production
- Administrative
- Ad-hoc
- Cooperative
- Workflow Management System that allows
coordination in a cooperative project - co-engineer, co-conception...
6Context (2)
- Existing Workflows
- Isolation execution
- Sequential execution
- Rigid model
7Context (3)
- Bonita offers a new workflow execution model
- Execution flexibility based on activity
anticipation. - Interchange data flexibility
Process
...
Edition
Review
Modification
Execution
(1)
Edition
Review
Mofification
Anticipable
Edition
(2)
Review
Anticipating
Modification
Executing
8Objectives of Bonita
- Supporting collaborative processes
- Long running activities
- Distributed teams coordination
- Awareness
- Provide a WF engine
- Simple
- Dynamic
- Flexible
9Bonita 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
- ...
10The basics
- Process
- Activities (or nodes)
- Edges
- Users
- Roles
- External events
11Process
- 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
12Activities
- 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,)
13Edges
- 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
14Agenda
- Bonita project introduction
- Basic organisation
- Awareness
- Advanced features
- Web services
- Bonita integration
- Current work
15Basic Organisation (API)
ProcessSessionBean Provides the Process
Instantiation API UserSessionBean Provides the
user API to get information on Todo list and
started activities produce events on activities
(start, terminate, ...) EngineBean Hidden to
user Provides the execution engine. Manage
process states and process changes API are also
available as Web Services
16ProcessSession 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.
17Process editor
- Tool for interactive edition of the process
18Process definition
- A Web Interface is used for detailled definition
19Process 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)
20The activity manager
- Client interface for process execution
- Provides
- User projects
- Todo list for a user
- Executing activities
21Agenda
- Bonita project introduction
- Basic organisation
- Awareness
- Advanced features
- Web services
- Bonita integration
- Current work
22Awareness (1)
JMS notifications in workflow users definition
and visualization User notifications Mail
notifications Jabber notifications
23Awareness(2)
- The process editor provide a view of the state of
the process
24Awareness(3)
The process editor allows multiple users
definition.
25Awareness(4)
Jabber Notification based in user preferences
26Agenda
- Bonita project introduction
- Basic organisation
- Awareness
- Advanced features
- Web services
- Bonita integration
- Current work
27Advanced features
- Anticipation
- Runtime process change
- Properties
- Hooks
- Process clone
28Anticipation
Anticipating vs executing activities
29Process change
The process can be changed anytime during its
execution
30Properties
- 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
31Hooks
- 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
- Anticipating
- On Cancel
- On Die
32Hooks
- Before start and after terminate are executed
outside of the activity transactional context - If the before start fails, the activity does not
start but does not fail either... it can be
retried later. - After start, anticipate and before terminate are
executed inside the activity transactional
context - Failure of one of the hooks makes the activity
failed - On Die and On cancel are used to take action in
case of activity failure - Recovery, programmatic compensation,
instantiation of a compensation process
33Process 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
34Hooks Implementation
- 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)
35Process 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
36Agenda
- Bonita project introduction
- Basic organisation
- Awareness
- Advanced features
- Web services
- Bonita integration
- Current work
37Bonita Web Services
- 100 browser-based environment
- We can use external Web Services and also publish
Workflow Web Services.
38Web Services and J2EE
Client tier
Web Services Technologies
RMI
IIOP
HTTP
HTTP
View generation
XML Parser
Web Container
JSP, MVC Framework
Web service Container
EJB Container
SQL
Web Services Technologies
Proprietary Protocol
Back-End Systems
Business Partner or other system
Existing System ERP System
DB
39Bonita Web Services Architecture
- Bonita Third Generation Workflow Architecture
based on Web Services.
- Bonita Definition component
- Bonita Execution component
- Web environment to define and control the
workflow process
40Integrating Bonita Web Services (1/2)
- 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
41Integrating Bonita Web Services (2/2)
- Client Connectivity
- Multiple client views for the same web service.
- Multiple Bonita Web Services API
- Workflow Definition APIs
- ProjectSession
- ProjectBasicSession
- ProjectSoapXML
- Workflow Execution APIs
- UserSession
- UserSoapXML
42Bonita Web Services Sample
- The XML code returned to the client.
43Bonita Client Connectivity
- A particular Bonita Web Service can be adapted
to each user view.
SOAP and/or ebXML request
Register Service in UDDI Registry
Locale Service and Service Descriptions (WSDL
and/or CPP)
Transform XML
Web service Container
44Agenda
- Bonita project introduction
- Basic organisation
- Awareness
- Advanced features
- Web services
- Bonita integration
- Current work
45Bonita 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/
46Libresource integration
47(No Transcript)
48Agenda
- Bonita project introduction
- Basic organisation
- Awareness
- Advanced features
- Web services
- Bonita integration
- Current work
49Bonita State
- Used in different projects
- KVM
- Libresource
- Coopera
- gt 7000 downloads at Bonita ObjectWeb site.
- Bonita references at TheServerSide, Apache,
Internet Global Congress... - Stable execution engine
50And also..
- Bonita is working with Evidian for the
integration into AccesMaster - Bonita and Bull are working with CG95.
- Bonita is member of ObjectWeb Workflow Working
group - Synergies between Bonita, Shark and Cow projects.
- We work on a list of components which forms the
building blocks of each workflow system
51Current work (1)
- Short term
- INRIA
- Users externalization
- Configurable workflow engine
- Integration in the LibreSource platform
- Bull RD
- Callback functions
- Mapper User and roles assignment at
instantiation time - Properties mapper
- LDAP mapper
- Custom mapper
- Performer assignment at activation start time
52Current work (2)
- Short term
- Bull RD
- Trace functionalities
- Log/Historic functionality
- Delete project instances when finish
- Middle term
- Forms generation
- Web Services orchestration BPEL4WS
- ...
53Bonita-v1.1
- Release Notes (04-03-2004)
- New graphical Interface for Definition and
Execution components. - UserSession and EngineSession beans are now
stateless session beans. - Configuration changes to select bonita and jrmp
(rmi) port. - Process instantiation and activites sub-process.
- New JMS Service Module (stateful session bean).
- Activities iteration is available.
- Client side Internationalization.
- Hooks improvement.
- LDAP support Authorization import LDAP users
to Bonita database. - New documentation LDAP configuration, new
user_guide, bonita samples, API javadoc.
54Bonita Today
55Bonita Home Page
http//bonita.objectweb.org/