# 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>).

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.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://bpmflow.gitbook.io/project/introduction.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
