This page describes the WSO2 Business Process Server architecture in the following sections:
Built on top of the Carbon Core like most WSO2 server products, WSO2 Business Process Server embeds the Apache ODE runtime for BPEL execution. BPS server also includes Human Tasks Engine which supports WS-Human Tasks specification 1.1. When BPEL processes or Human Tasks are deployed on Business Process Server, It will publish Soap Services to the external world. These services are published though the axis2 web services integration layer.
The following diagram illustrates the BPS architecture from a messaging perspective (the components of the pipes are not in a specific order).
Let us look at each of the components depicted in above diagram.
This refers to an external application which sends a request to the Business Process Server. This request could be for a BPEL process published Axis2 service or Human Task published Axis2 Service.
This block represents the transport layer available within the Business Process Server. This layer is from Axis2 Web service engine's supported transports. Hence you can invoke Web services using Axis2 supported transports such as HTTP, HTTPS, JMS, etc.
When a message is received through the transport layer of axis2, it goes through the axis2 engine. At this layer, various quality of service requirements such as WS-Addressing and WS-Security will be processed using Axis2 modules such as rampart and addressing. After processing the message for QoS, it will be forwarded to either the Human Task Engine or the BPEL Engine depending on the intended endpoint of the message.
Human Task Engine
At the human task engine, the received message will be executed against the human tasks definition and configured user store. If the execution is successful, an instance of the task will be created and relevant task instance data will be persisted to the database.
This layer sits between the ODE BPEL Run-time and Axis2 for processing and forwarding received messages to ODE Runtime. In addition to exposing services via axis2 engine, handling the deployment and un-deployment of BPEL processes, this layer provides multi-tenancy support.
This represents the Apache ODE Run-time embedded within the BPS. When a message is received through the Axis2 integration layer, it will be processed against the compiled BPEL process definition and the process instance state will be persisted to the database if the process is being executed in persistent mode.
This represents the integration layer and the Activiti BPMN engine embedded within BPS. When REST request received by the BPMN REST API will perform relevant operations in BPMN runtime against deployed BPMN processes. In addition to exposed REST service, admin services are provided for BPMN processes and instance management.
Data Access Objects
This layer consists of an Apache OpenJPA-based Java persistence layer which is used to interact with the database.
This is the RDBMS used for persisting BPEL Process definition/instance data and Human tasks instance data.
This section describes the component-based architecture of WSO2 BPS.
The following is a brief description of each of the components depicted in the above diagram.
Carbon Core is the base server product which is used by all other WSO2 Carbon products which are built by addition additional components.
BPEL UI is the UI layer of BPS for BPEL processes. It consist of Process View, Process Up loader, Process Instance view and Graphical process view.
Management API consist of set of secured Web services that can be used to manage deployed BPEL processes and instances. The main API's provided consist of ProcessManagementAPI and InstanceManagementAPI which are secured soap Web services.
Process services are axis2 Web services exposed when a BPEL process is deployed. By invoking these Web services, the BPEL process can be initiated.
BPEL deployer is a file system-based process deployer. When a BPEL process package is saved to the "bpel" directory in BPS, it will be validated and deployed on the server.
Integration layer is the layer that combines Axis2 Web services engine and ODE run-time to provide expose and invoke Web services
This is part of Apache ODE. It validates and complies BPEL process definition into a compiled BPEL process (.cbp file).
As the name implies, ODE runtime executes the BPEL process.
These are data access objects implemented using Apache OpenJPA and Hibernate. WSO2 BPS uses the OpenJPA based persistence layer.
This is also part of Apache ODE which provides concurrency and persistence facilities to implement BPEL constructs.
Human Task Components
Human Task UI
Human Task UI provides facilities to view and upload task packages, view task instances and perform various human task operations on the tasks.
Task Management API
Task management API provides secured soap Web services to manage tasks and task instances. The most important API provided is the Human Task Client API which is defined in the WS Human Tasks specification. Human Task UI is built on top of these management API's.
Human Task Services
When a task package is deployed, Axis2 Web services are published according using the WSDLs included in the task package. Notifications can be created by invoking these services and instances of tasks.
Human Task Engine
Task engine does the processing of human task run-time definition against the incoming messages to create task/notification instances. It does validations against the user store for permissions and also performs the task client API actions against the task/notification instances. Additionally, it has scheduling capability to handle escalations and task cleanups.
Human Task Deployer
Task deployer is a file system-based deployer which deploys and un-deploys task packages when added to or removed from the designated "humantasks" directory.
DAO'S are Apache OpenJPA based persistence layer used to interact with the persistence db.
BPMN UI represents the UI layer of BPS for BPMN processes. It consists of Process View, Process Uploader, Process Instance List View and Process Instance view with Graphical Process Active State Diagram.
BPMN-explorer represents jaggery web application that provide UI for BPMN-UserTasks
Management API consists of set of secured SOAP Web services that can be used to manage BPMN processes and instances.
REST API represents REST API to the Activiti BPMN engine.
BPMN deployer is a file system-based bpmn process deployer. When a BPMN process package is saved to the "bpmn" directory in BPS, it will validate and deploy on the server.
Activiti engine is the BPMN engine that executes BPMN processes.
DAOs represent data access objects used by Activiti Engine.
User Management component represents user and group management implementation for Activiti engine.