# Technical Information

The responsible class to simulate of **BPM Process** execution is **PEFBpmProcessExecutor**.&#x20;

This class can:\
\* Receive a **BpmTaskInstance** in a **BpmProcessInstance**.\
\* Assign the **BpmTaskAssignment** to a **BpmUser**.\
\* Set the external object of the **BpmTaskInstance** with an **OrbeonFromInstance** or a **BusinessObject**.\
\* Finalize the **BpmTaskAssignment** and generate next tasks.\
\
In most cases an Orbeon Form is used to simulate a task. The class responsible to generate **OrbeonFormDefintion** and **OrbeonFormInstance** is **OrbeonSavedFormDefinition**. To do this the XML string of the form definition and instance has to be passed as arguments to **OrbeonSavedFormDefinition**.

**Automatic Process Execution in SUnit**\
**BpmProcessExecutionTest** class has the proper structure and methods to simulate the **BPM Process** execution and it does it with the help of the **PEF framework**.\
In order to simulate a process exectuion a subclass of **BpmProcessExecutionTest** must be created. One subclass per BPM process definition.\
The picture below show the **SUnit** with all tests for the **BPM Execution Engine**. Each Test Class represent a BPM Process and the tests usually are differents path that the process can follow.

![](https://3974112602-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LH4gGgyMb1_fhOg782r%2F-Lhpo1WQMBgLdoLn8u4e%2F-Lhpq0GMXprGaM16egwd%2Fimage.png?alt=media\&token=461ccf1e-131a-4e37-8e53-f84d92f8a943)

