ProcessMaker Nayra is a package that provides base classes to implement a process execution engine. This includes patterns to implement activities, events and gateways.
Load a BPMN definition
$bpmnRepository = new BpmnDocument();
$bpmnRepository->setEngine($this->engine);
$bpmnRepository->setFactory($this->repository);
$bpmnRepository->load('files/ParallelGateway.bpmn');
Get a reference to the process
$process = $bpmnRepository->getProcess('ParallelGateway');
Create a data storage
$dataStore = $this->repository->createDataStore();
Create a process instance
$instance = $this->engine->createExecutionInstance($process, $dataStore);
Trigger the start event
$start = $bpmnRepository->getStartEvent('StartEvent');
$start->start($instance);
Execute tokens and run to the next state
$this->engine->runToNextState();
One token arrives to the first task
$firstTask = $bpmnRepository->getScriptTask('start');
$token = $firstTask->getTokens($instance)->item(0);
Complete the first task
$startActivity->complete($token);
Execute tokens and run to the next state
$this->engine->runToNextState();
One token arrives to the second task and one to the third task
$secondTask = $bpmnRepository->getScriptTask('ScriptTask_1');
$token1 = $secondTask->getTokens($instance)->item(0);
$thirdTask = $bpmnRepository->getScriptTask('ScriptTask_2');
$token2 = $thirdTask->getTokens($instance)->item(0);
ProcessMaker Nayra is open-sourced software licensed under the Apache 2.0 license.