# Introduction

[**BPMFlow**](https://github.com/brunobuzzi/BpmFlow) is an implementation of the Buisness Process Model standards and includes an execution engine for business process automation.

[**BPMFlow**](https://github.com/brunobuzzi/BpmFlow) is built on top of the state-of-the-art backend [**GemStone/S**](https://github.com/GsDevKit/GsDevKit_home) from [**GemTalkSystems**](https://gemtalksystems.com/). BPMFlow is an open source project.

[**BPMFlow**](https://github.com/brunobuzzi/BpmFlow) is integrated with different technologies such as:

* [Orbeon Forms](https://www.orbeon.com/)
* [Bizagi Modeler](https://www.bizagi.com/en/products/bpm-suite/modeler)
* [Highcharts](http://www.highcharts.com/)

## Open Source BPM using GemStone/S, Orbeon , Bizagi, Highcharts and others <a href="#open-source-bpm-using-gemstone-s-orbeon-and-others" id="open-source-bpm-using-gemstone-s-orbeon-and-others"></a>

BPM packages for [GemStone/S](http://www.gemtalksystems.com/) ® implements the BPM standard. The application code can be found at ([https://github.com/brunobuzzi/BpmFlow](https://github.com/brunobuzzi/BpmFlow)).

BPM models are created using [Bizagi Modeler](https://www.bizagi.com/en/products/bpm-suite/modeler) ® and exported as **XPDL** files. The **XPDL** files are  imported into BPMFlow, and the **BPM Meta Model Execution Engine** can instantiate and execute the models inside **GemStone/S**.

The **BPM application** presents forms for the user to enter or modify data using [Orbeon](http://www.orbeon.com) ® or Seaside components. Inside **Bizagi Modeler** if a task has the extended attribute -_seasideComponent_- then is a **Seaside** task if not then is an **Orbeon** form. The execution engine will show a **Seaside** component or an **Orbeon** form depending on the task's definition in the **Bizagi Modeler**.

Using **Orbeon** is entirely optional..

![BPM Flow + Orbeon + Bizagi](https://3974112602-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LH4gGgyMb1_fhOg782r%2F-LH9b8dq4OQ8asINzTRn%2F-LH9bTdjXvYpg5KddZ7s%2Fbizagi-4.jpg?alt=media\&token=524bfcdb-a505-456a-bd92-3db06743d37a)



**GemStone/S Packages**

**Orbeon**:

* Store Orbeon Form Definitions and Instances
  * It creates from the XML string an object representation of the Form Definition or Instance .
* Query Orbeon Form Definitions and Instances.
  * Different queries can be applied to Form Definitions and Instances.
* Process Orbeon Forms in XML format after being POST by the user.
  * Orbeon do a POST to a REST services and it is processed and added to GemStone/S object base.
* Synchronization between Orbeon MySQL Database and GemStone/S Object Database.

**BPM Implementation**:

* Import **XPDL** files from **Bizagi Modeler**.
  * Others modeler tools can be added using XPDL import.
* Each **Bizagi** element is mapped to an **BpmArtifactDefinition** subclass.
* The **Bizagi** process creates a **BpmProcessDefinition** instance representing the process definition inside **GemStone/S**.
* The **BPM Execution Engine** instantiate and execute instances of **BpmProcessDefinition** giving life to the process.
* Each **Bizagi** task presents a user interface using either an **Orbeon Form** or a **Seaside Component**.
* Support for **Gateways**:
  * Creation Conditions: \[:form | form amount > 15000]
* Display **Orbeon** in a IFrame or in a different page (configurable by user).
* **Backoffice** and **Frontoffice** web applications.
