540 likes | 877 Views
Bonita. J2EE 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
E N D
Bonita J2EE 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...
Edition Correction Edition Merge Comments Review Correction Edition Context (2) • Existing Workflows • Isolation execution • Sequential execution • Rigid model
Context (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
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 • 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
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 visualization • User notifications: • Mail notifications • Jabber 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
Anticipation Green activities are anticipable
Process change The 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
Hooks • 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, On execute 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
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
Hooks 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)
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 • No need to worry about how each Web Service is implemented. • You will easily integrate your software with other pieces of software. • Powerful and easy integration that will enable more efficient business processes.
Business Partner or other system Computer Applets, JWS Applications EJB’s Connectors Servlets Web 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
Server-Side Workflowinformation BusinessLogic Web Services Client-Side Presentation MySQL Server-Side Presentation Postgres Struts Oracle BonitaDatabase Bonita 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
SOAP Serialization/ De-serialization HTTP Encoding/ Decoding HTTP Request sent to SOAP server Method Call • Business Partner • Service API • (XML/SOAP) SOAP Package XML HTTP Response from SOAP server Local Interfaces • Business Partner • Server XML Java Parser View generation HTTP Bonita Struts Framework Web Server Bonita 100% Browser-based Bonita & Web Services • 100% browser-based environment • We can use external Web Services and also publish Workflow 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.
name name state id creator id NodeLightValue name email role description id … node1 2 1 2 toxic@loria.fr admin The admin role admin 2 Bonita Web Services Sample • The XML code returned to the client.
JAXM, JAX/RPC Session Bean XSL/XSLT Castor XML Data Binding JAXR JAXP, JAXB Servlet / JSP s Business Partner or other system Client Request UDDI Registry Bonita 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
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/
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