Merged in darojas/processmaker (pull request #432)
Se modifica la funcionalidad de start event para Case Scheduler y Web Entry
This commit is contained in:
@@ -226,6 +226,18 @@ class BpmnWorkflow extends Project\Bpmn
|
|||||||
if ($event && $event->getEvnType() == "START") {
|
if ($event && $event->getEvnType() == "START") {
|
||||||
$this->wp->setStartTask($data["FLO_ELEMENT_DEST"]);
|
$this->wp->setStartTask($data["FLO_ELEMENT_DEST"]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// update case scheduler
|
||||||
|
if ($event->getEvnType() == "START" && $event->getEvnMarker() == "TIMER") {
|
||||||
|
$aData = array('TAS_UID'=>$data["FLO_ELEMENT_DEST"], 'SCH_UID'=>$data["FLO_ELEMENT_ORIGIN"]);
|
||||||
|
$this->wp->updateCaseScheduler($aData);
|
||||||
|
}
|
||||||
|
|
||||||
|
// update web entry
|
||||||
|
if ($event->getEvnType() == "START" && $event->getEvnMarker() == "MESSAGE") {
|
||||||
|
$aData = array('TAS_UID'=>$data["FLO_ELEMENT_DEST"], 'WE_UID'=>$data["FLO_ELEMENT_ORIGIN"]);
|
||||||
|
$this->wp->updateWebEntry($aData);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -271,6 +283,54 @@ class BpmnWorkflow extends Project\Bpmn
|
|||||||
$this->wp->setStartTask($activity->getActUid(), false);
|
$this->wp->setStartTask($activity->getActUid(), false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// update case scheduler
|
||||||
|
if (! is_null($event) && $event->getEvnType() == "START" && $event->getEvnMarker() == "TIMER") {
|
||||||
|
$aData = array(
|
||||||
|
'SCH_NAME'=>'',
|
||||||
|
'SCH_DEL_USER_NAME'=>'',
|
||||||
|
'SCH_DEL_USER_UID'=>'',
|
||||||
|
'TAS_UID'=>'',
|
||||||
|
'SCH_LAST_RUN_TIME'=>NULL,
|
||||||
|
'SCH_STATE'=>'',
|
||||||
|
'SCH_LAST_STATE'=>'',
|
||||||
|
'USR_UID'=>'',
|
||||||
|
'SCH_OPTION'=>'',
|
||||||
|
'SCH_DAYS_PERFORM_TASK'=>'',
|
||||||
|
'SCH_EVERY_DAYS'=>NULL,
|
||||||
|
'SCH_WEEK_DAYS'=>'',
|
||||||
|
'SCH_START_DAY'=>'',
|
||||||
|
'SCH_START_DAY_OPT_1'=>'',
|
||||||
|
'SCH_START_DAY_OPT_2'=>'',
|
||||||
|
'SCH_MONTHS'=>'',
|
||||||
|
'SCH_REPEAT_EVERY'=>'',
|
||||||
|
'SCH_REPEAT_STOP_IF_RUNNING'=>'',
|
||||||
|
'CASE_SH_PLUGIN_UID'=>NULL,
|
||||||
|
'SCH_DEL_USER_PASS'=>'',
|
||||||
|
'SCH_UID'=>$flow->getFloElementOrigin(),
|
||||||
|
'SCH_REPEAT_UNTIL'=>''
|
||||||
|
);
|
||||||
|
$this->wp->updateCaseScheduler($aData);
|
||||||
|
}
|
||||||
|
|
||||||
|
// update web entry
|
||||||
|
if (! is_null($event) && $event->getEvnType() == "START" && $event->getEvnMarker() == "MESSAGE") {
|
||||||
|
$aData = array(
|
||||||
|
'WE_UID'=>$flow->getFloElementOrigin(),
|
||||||
|
'TAS_UID'=>'',
|
||||||
|
'DYN_UID'=>'',
|
||||||
|
'TAS_UID'=>'',
|
||||||
|
'USR_UID'=>'',
|
||||||
|
'WE_METHOD'=>'',
|
||||||
|
'WE_INPUT_DOCUMENT_ACCESS'=>'',
|
||||||
|
'WE_DATA'=>'',
|
||||||
|
'WE_CREATE_USR_UID'=>'',
|
||||||
|
'WE_UPDATE_USR_UID'=>'',
|
||||||
|
'WE_UPDATE_DATE'=>date('Y-m-d H:i:s')
|
||||||
|
);
|
||||||
|
$this->wp->updateWebEntry($aData);
|
||||||
|
}
|
||||||
|
|
||||||
} elseif ($flow->getFloElementOriginType() == "bpmnActivity" &&
|
} elseif ($flow->getFloElementOriginType() == "bpmnActivity" &&
|
||||||
$flow->getFloElementDestType() == "bpmnEvent") {
|
$flow->getFloElementDestType() == "bpmnEvent") {
|
||||||
// verify case: activity -> event(end)
|
// verify case: activity -> event(end)
|
||||||
@@ -310,19 +370,36 @@ class BpmnWorkflow extends Project\Bpmn
|
|||||||
$event = \BpmnEventPeer::retrieveByPK($eventUid);
|
$event = \BpmnEventPeer::retrieveByPK($eventUid);
|
||||||
|
|
||||||
// create case scheduler
|
// create case scheduler
|
||||||
if ($event->getEvnMarker() == "TIMER") {
|
if ($event->getEvnMarker() == "TIMER" && $event->getEvnType() == "START") {
|
||||||
$this->wp->addCaseScheduler($eventUid);
|
$this->wp->addCaseScheduler($eventUid);
|
||||||
}
|
}
|
||||||
|
|
||||||
// create web entry
|
// create web entry
|
||||||
if ($event->getEvnMarker() == "MESSAGE") {
|
if ($event->getEvnMarker() == "MESSAGE" && $event->getEvnType() == "START") {
|
||||||
$this->wp->addWebEntry($eventUid);
|
$this->wp->addWebEntry($eventUid);
|
||||||
}
|
}
|
||||||
|
|
||||||
//return parent::addEvent($data);
|
|
||||||
return $eventUid;
|
return $eventUid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function removeEvent($data)
|
||||||
|
{
|
||||||
|
|
||||||
|
$event = \BpmnEventPeer::retrieveByPK($data);
|
||||||
|
|
||||||
|
// delete case scheduler
|
||||||
|
if ($event->getEvnMarker() == "TIMER" && $event->getEvnType() == "START") {
|
||||||
|
$this->wp->removeCaseScheduler($data);
|
||||||
|
}
|
||||||
|
|
||||||
|
// delete web entry
|
||||||
|
if ($event->getEvnMarker() == "MESSAGE" && $event->getEvnType() == "START") {
|
||||||
|
$this->wp->removeWebEntry($data);
|
||||||
|
}
|
||||||
|
|
||||||
|
parent::removeEvent($data);
|
||||||
|
}
|
||||||
|
|
||||||
public function mapBpmnFlowsToWorkflowRoutes()
|
public function mapBpmnFlowsToWorkflowRoutes()
|
||||||
{
|
{
|
||||||
$activities = $this->getActivities();
|
$activities = $this->getActivities();
|
||||||
|
|||||||
@@ -668,9 +668,6 @@ class Workflow extends Handler
|
|||||||
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
||||||
$oDataset->next();
|
$oDataset->next();
|
||||||
while ($aRow = $oDataset->getRow()) {
|
while ($aRow = $oDataset->getRow()) {
|
||||||
if ($aRow['EVN_UID'] == 'TIMER') {
|
|
||||||
$this->removeCaseScheduler();
|
|
||||||
}
|
|
||||||
$oEvent->remove($aRow['EVN_UID']);
|
$oEvent->remove($aRow['EVN_UID']);
|
||||||
$oDataset->next();
|
$oDataset->next();
|
||||||
}
|
}
|
||||||
@@ -775,7 +772,7 @@ class Workflow extends Handler
|
|||||||
$this->update(array("PRO_STATUS" => $status));
|
$this->update(array("PRO_STATUS" => $status));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function addCaseScheduler($eventUid)
|
public function addCaseScheduler($schUid)
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$caseScheduler = new \CaseScheduler();
|
$caseScheduler = new \CaseScheduler();
|
||||||
@@ -805,7 +802,7 @@ class Workflow extends Handler
|
|||||||
'SCH_REPEAT_STOP_IF_RUNNING'=>'',
|
'SCH_REPEAT_STOP_IF_RUNNING'=>'',
|
||||||
'CASE_SH_PLUGIN_UID'=>NULL,
|
'CASE_SH_PLUGIN_UID'=>NULL,
|
||||||
'SCH_DEL_USER_PASS'=>'',
|
'SCH_DEL_USER_PASS'=>'',
|
||||||
'SCH_UID'=>$eventUid,
|
'SCH_UID'=>$schUid,
|
||||||
'SCH_REPEAT_UNTIL'=>''
|
'SCH_REPEAT_UNTIL'=>''
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -819,12 +816,12 @@ class Workflow extends Handler
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function removeCaseScheduler()
|
public function removeCaseScheduler($schUid)
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$caseScheduler = new \CaseScheduler();
|
$caseScheduler = new \CaseScheduler();
|
||||||
self::log("Remove Case Scheduler: ".$caseScheduler->getSchUid());
|
self::log("Remove Case Scheduler: ".$schUid);
|
||||||
$caseScheduler->delete();
|
$caseScheduler->remove($schUid);
|
||||||
self::log("Remove Case Scheduler Success!");
|
self::log("Remove Case Scheduler Success!");
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
self::log("Exception: ", $e->getMessage(), "Trace: ", $e->getTraceAsString());
|
self::log("Exception: ", $e->getMessage(), "Trace: ", $e->getTraceAsString());
|
||||||
@@ -832,16 +829,23 @@ class Workflow extends Handler
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function updateCaseScheduler()
|
public function updateCaseScheduler($data)
|
||||||
{
|
{
|
||||||
|
try {
|
||||||
|
$caseScheduler = new \CaseScheduler();
|
||||||
|
$caseScheduler->update($data);
|
||||||
|
self::log("Update Case Scheduler Success!");
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
self::log("Exception: ", $e->getMessage(), "Trace: ", $e->getTraceAsString());
|
||||||
|
throw $e;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function addWebEntry($eventUid)
|
public function addWebEntry($weUid)
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$webEntry = new \WebEntry();
|
$webEntry = new \WebEntry();
|
||||||
$webEntryUid = $eventUid;
|
$webEntryUid = $weUid;
|
||||||
$webEntry->setWeUid($webEntryUid);
|
$webEntry->setWeUid($webEntryUid);
|
||||||
$webEntry->setProUid($this->proUid);
|
$webEntry->setProUid($this->proUid);
|
||||||
$webEntry->setWeMethod('');
|
$webEntry->setWeMethod('');
|
||||||
@@ -856,12 +860,12 @@ class Workflow extends Handler
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function removeWebEntry()
|
public function removeWebEntry($weUid)
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$webEntry = new \WebEntry();
|
$webEntry = new \ProcessMaker\BusinessModel\WebEntry();
|
||||||
self::log("Remove Web Entry: ".$webEntry->getWeUid());
|
self::log("Remove Web Entry: ".$weUid);
|
||||||
$webEntry->delete();
|
$webEntry->delete($weUid);
|
||||||
self::log("Remove Web Entry Success!");
|
self::log("Remove Web Entry Success!");
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
self::log("Exception: ", $e->getMessage(), "Trace: ", $e->getTraceAsString());
|
self::log("Exception: ", $e->getMessage(), "Trace: ", $e->getTraceAsString());
|
||||||
@@ -869,8 +873,18 @@ class Workflow extends Handler
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function updateWebEntry()
|
public function updateWebEntry($data)
|
||||||
{
|
{
|
||||||
|
try {
|
||||||
|
$webEntryUid = $data['WE_UID'];
|
||||||
|
$webEntry = \WebEntryPeer::retrieveByPK($webEntryUid);
|
||||||
|
$webEntry->fromArray($data, \BasePeer::TYPE_FIELDNAME);
|
||||||
|
$webEntry->save();
|
||||||
|
self::log("Update Web Entry Success!");
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
self::log("Exception: ", $e->getMessage(), "Trace: ", $e->getTraceAsString());
|
||||||
|
throw $e;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user