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:
Erik Amaru Ortiz
2014-04-29 10:11:30 -04:00
2 changed files with 111 additions and 20 deletions

View File

@@ -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();

View File

@@ -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;
}
} }
} }