2014-02-05 17:29:28 -04:00
|
|
|
<?php
|
|
|
|
|
namespace ProcessMaker\Project\Adapter;
|
|
|
|
|
|
|
|
|
|
use ProcessMaker\Project;
|
2014-03-26 12:20:58 -04:00
|
|
|
use ProcessMaker\Util\Common;
|
2014-02-05 17:29:28 -04:00
|
|
|
|
2014-02-10 13:09:50 -04:00
|
|
|
/**
|
|
|
|
|
* Class WorkflowBpmn
|
|
|
|
|
*
|
|
|
|
|
* @package ProcessMaker\Project\Adapter
|
|
|
|
|
* @author Erik Amaru Ortiz <aortiz.erik@gmail.com, erik@colosa.com>
|
|
|
|
|
*/
|
2014-02-05 17:29:28 -04:00
|
|
|
class WorkflowBpmn extends Project\Workflow
|
|
|
|
|
{
|
2014-02-10 16:35:24 -04:00
|
|
|
/**
|
|
|
|
|
* @var \ProcessMaker\Project\Bpmn
|
|
|
|
|
*/
|
|
|
|
|
protected $bp;
|
|
|
|
|
|
2014-02-05 17:29:28 -04:00
|
|
|
/**
|
|
|
|
|
* OVERRIDES
|
|
|
|
|
*/
|
|
|
|
|
|
2014-02-10 16:35:24 -04:00
|
|
|
public static function load($prjUid)
|
|
|
|
|
{
|
|
|
|
|
$parent = parent::load($prjUid);
|
|
|
|
|
|
|
|
|
|
$me = new self();
|
|
|
|
|
|
|
|
|
|
$me->process = $parent->process;
|
|
|
|
|
$me->proUid = $parent->proUid;
|
|
|
|
|
$me->bp = Project\Bpmn::load($prjUid);
|
|
|
|
|
|
|
|
|
|
return $me;
|
|
|
|
|
}
|
|
|
|
|
|
2014-02-05 17:29:28 -04:00
|
|
|
public function create($data)
|
|
|
|
|
{
|
|
|
|
|
try {
|
|
|
|
|
parent::create($data);
|
|
|
|
|
} catch (\Exception $e) {
|
|
|
|
|
throw new \RuntimeException(sprintf("Can't create Workflow Project." . PHP_EOL . $e->getMessage()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
$bpData = array();
|
|
|
|
|
$bpData["PRJ_UID"] = $this->getUid();
|
|
|
|
|
|
|
|
|
|
if (array_key_exists("PRO_TITLE", $data)) {
|
|
|
|
|
$bpData["PRJ_NAME"] = $data["PRO_TITLE"];
|
|
|
|
|
}
|
|
|
|
|
if (array_key_exists("PRO_DESCRIPTION", $data)) {
|
|
|
|
|
$bpData["PRJ_DESCRIPTION"] = $data["PRO_DESCRIPTION"];
|
|
|
|
|
}
|
|
|
|
|
if (array_key_exists("PRO_CREATE_USER", $data)) {
|
|
|
|
|
$bpData["PRJ_AUTHOR"] = $data["PRO_CREATE_USER"];
|
|
|
|
|
} elseif (array_key_exists("USR_UID", $data)) {
|
|
|
|
|
$bpData["PRJ_AUTHOR"] = $data["USR_UID"];
|
|
|
|
|
}
|
|
|
|
|
|
2014-02-06 11:00:15 -04:00
|
|
|
$bp = new Project\Bpmn();
|
|
|
|
|
$bp->create($bpData);
|
|
|
|
|
|
|
|
|
|
// At this time we will add a default diagram and process
|
|
|
|
|
$bp->addDiagram();
|
|
|
|
|
$bp->addProcess();
|
2014-02-05 17:29:28 -04:00
|
|
|
|
|
|
|
|
} catch (\Exception $e) {
|
|
|
|
|
$prjUid = $this->getUid();
|
|
|
|
|
$this->remove();
|
|
|
|
|
|
|
|
|
|
throw new \RuntimeException(sprintf(
|
|
|
|
|
"Can't create Project with prj_uid: %s, workflow creation fails." . PHP_EOL . $e->getMessage()
|
|
|
|
|
, $prjUid
|
|
|
|
|
));
|
|
|
|
|
}
|
|
|
|
|
}
|
2014-02-10 16:35:24 -04:00
|
|
|
|
2014-02-26 12:53:17 -04:00
|
|
|
public static function getList($start = null, $limit = null, $filter = "", $changeCaseTo = CASE_UPPER)
|
|
|
|
|
{
|
|
|
|
|
return parent::getList($start, $limit, $filter, $changeCaseTo);
|
|
|
|
|
}
|
|
|
|
|
|
2014-02-10 16:35:24 -04:00
|
|
|
public function remove()
|
|
|
|
|
{
|
|
|
|
|
parent::remove();
|
|
|
|
|
$this->bp->remove();
|
|
|
|
|
}
|
2014-02-05 17:29:28 -04:00
|
|
|
}
|