diff --git a/workflow/engine/classes/class.derivation.php b/workflow/engine/classes/class.derivation.php index 73e9c2403..e6e4718ba 100755 --- a/workflow/engine/classes/class.derivation.php +++ b/workflow/engine/classes/class.derivation.php @@ -112,7 +112,7 @@ class Derivation $arrayTaskData["NEXT_TASK"]["TAS_PARENT"] = ""; } - $arrayTaskData["NEXT_TASK"]["USER_ASSIGNED"] = (!in_array($arrayTaskData["NEXT_TASK"]["TAS_TYPE"], array("GATEWAYTOGATEWAY", "END-MESSAGE-EVENT", "END-EMAIL-EVENT")))? $this->getNextAssignedUser($arrayTaskData) : array("USR_UID" => ""); + $arrayTaskData["NEXT_TASK"]["USER_ASSIGNED"] = (!in_array($arrayTaskData["NEXT_TASK"]["TAS_TYPE"], array("GATEWAYTOGATEWAY", "END-MESSAGE-EVENT", "SCRIPT-TASK", "END-MESSAGE-EVENT", "END-EMAIL-EVENT")))? $this->getNextAssignedUser($arrayTaskData) : array("USR_UID" => "", "USR_FULLNAME" => ""); } //Return diff --git a/workflow/engine/classes/class.processes.php b/workflow/engine/classes/class.processes.php index fdbb566be..4841cab7d 100755 --- a/workflow/engine/classes/class.processes.php +++ b/workflow/engine/classes/class.processes.php @@ -3719,6 +3719,7 @@ class Processes $oData->messageType = $this->getMessageTypes($sProUid); $oData->messageTypeVariable = $this->getMessageTypeVariables($sProUid); $oData->messageEventDefinition = $this->getMessageEventDefinitions($sProUid); + $oData->scriptTask = $this->getScriptTasks($sProUid); $oData->emailEvent = $this->getEmailEvent($sProUid); $oData->filesManager = $this->getFilesManager($sProUid); $oData->groupwfs = $this->groupwfsMerge($oData->groupwfs, $oData->processUser, "USR_UID"); @@ -4820,6 +4821,7 @@ class Processes $this->createMessageType((isset($oData->messageType))? $oData->messageType : array()); $this->createMessageTypeVariable((isset($oData->messageTypeVariable))? $oData->messageTypeVariable : array()); $this->createMessageEventDefinition($arrayProcessData["PRO_UID"], (isset($oData->messageEventDefinition))? $oData->messageEventDefinition : array()); + $this->createScriptTask($arrayProcessData["PRO_UID"], (isset($oData->scriptTask))? $oData->scriptTask : array()); $this->createEmailEvent($arrayProcessData["PRO_UID"], (isset($oData->emailEvent))? $oData->emailEvent : array()); $this->createFilesManager($arrayProcessData["PRO_UID"], (isset($oData->filesManager))? $oData->filesManager : array()); } diff --git a/workflow/engine/classes/model/map/EmailEventMapBuilder.php b/workflow/engine/classes/model/map/EmailEventMapBuilder.php index c85defca8..83ea61ceb 100644 --- a/workflow/engine/classes/model/map/EmailEventMapBuilder.php +++ b/workflow/engine/classes/model/map/EmailEventMapBuilder.php @@ -77,7 +77,7 @@ class EmailEventMapBuilder $tMap->addColumn('EMAIL_EVENT_SUBJECT', 'EmailEventSubject', 'string', CreoleTypes::VARCHAR, false, 150); - $tMap->addColumn('EMAIL_EVENT_BODY', 'EmailEventBody', 'string', CreoleTypes::LONGVARCHAR, true, null); + $tMap->addColumn('PRF_UID', 'PrfUid', 'string', CreoleTypes::VARCHAR, false, 32); } // doBuild() diff --git a/workflow/engine/classes/model/map/TaskMapBuilder.php b/workflow/engine/classes/model/map/TaskMapBuilder.php index fd9a2e867..56eeec381 100755 --- a/workflow/engine/classes/model/map/TaskMapBuilder.php +++ b/workflow/engine/classes/model/map/TaskMapBuilder.php @@ -159,7 +159,7 @@ class TaskMapBuilder $tMap->addColumn('TAS_SELFSERVICE_EXECUTION', 'TasSelfserviceExecution', 'string', CreoleTypes::VARCHAR, false, 15); - $tMap->addValidator('TAS_TYPE', 'validValues', 'propel.validator.ValidValuesValidator', 'NORMAL|ADHOC|SUBPROCESS|HIDDEN|GATEWAYTOGATEWAY|WEBENTRYEVENT|END-MESSAGE-EVENT|START-MESSAGE-EVENT|INTERMEDIATE-THROW-MESSAGE-EVENT|INTERMEDIATE-CATCH-MESSAGE-EVENT|END-EMAIL-EVENT', 'Please enter a valid value for TAS_TYPE'); + $tMap->addValidator('TAS_TYPE', 'validValues', 'propel.validator.ValidValuesValidator', 'NORMAL|ADHOC|SUBPROCESS|HIDDEN|GATEWAYTOGATEWAY|WEBENTRYEVENT|END-MESSAGE-EVENT|START-MESSAGE-EVENT|INTERMEDIATE-THROW-MESSAGE-EVENT|INTERMEDIATE-CATCH-MESSAGE-EVENT|SCRIPT-TAS|END-EMAIL-EVENT', 'Please enter a valid value for TAS_TYPE'); $tMap->addValidator('TAS_TIMEUNIT', 'validValues', 'propel.validator.ValidValuesValidator', 'MINUTES|HOURS|DAYS|WEEKS|MONTHS', 'Please select a valid value for TAS_TIMEUNIT.'); diff --git a/workflow/engine/classes/model/om/BaseEmailEvent.php b/workflow/engine/classes/model/om/BaseEmailEvent.php index 98dc81de1..97c25513b 100644 --- a/workflow/engine/classes/model/om/BaseEmailEvent.php +++ b/workflow/engine/classes/model/om/BaseEmailEvent.php @@ -64,10 +64,10 @@ abstract class BaseEmailEvent extends BaseObject implements Persistent protected $email_event_subject = ''; /** - * The value for the email_event_body field. + * The value for the prf_uid field. * @var string */ - protected $email_event_body; + protected $prf_uid = ''; /** * Flag to prevent endless save loop, if this object is referenced @@ -150,14 +150,14 @@ abstract class BaseEmailEvent extends BaseObject implements Persistent } /** - * Get the [email_event_body] column value. + * Get the [prf_uid] column value. * * @return string */ - public function getEmailEventBody() + public function getPrfUid() { - return $this->email_event_body; + return $this->prf_uid; } /** @@ -293,12 +293,12 @@ abstract class BaseEmailEvent extends BaseObject implements Persistent } // setEmailEventSubject() /** - * Set the value of [email_event_body] column. + * Set the value of [prf_uid] column. * * @param string $v new value * @return void */ - public function setEmailEventBody($v) + public function setPrfUid($v) { // Since the native PHP type for this column is string, @@ -307,12 +307,12 @@ abstract class BaseEmailEvent extends BaseObject implements Persistent $v = (string) $v; } - if ($this->email_event_body !== $v) { - $this->email_event_body = $v; - $this->modifiedColumns[] = EmailEventPeer::EMAIL_EVENT_BODY; + if ($this->prf_uid !== $v || $v === '') { + $this->prf_uid = $v; + $this->modifiedColumns[] = EmailEventPeer::PRF_UID; } - } // setEmailEventBody() + } // setPrfUid() /** * Hydrates (populates) the object variables with values from the database resultset. @@ -343,7 +343,7 @@ abstract class BaseEmailEvent extends BaseObject implements Persistent $this->email_event_subject = $rs->getString($startcol + 5); - $this->email_event_body = $rs->getString($startcol + 6); + $this->prf_uid = $rs->getString($startcol + 6); $this->resetModified(); @@ -573,7 +573,7 @@ abstract class BaseEmailEvent extends BaseObject implements Persistent return $this->getEmailEventSubject(); break; case 6: - return $this->getEmailEventBody(); + return $this->getPrfUid(); break; default: return null; @@ -601,7 +601,7 @@ abstract class BaseEmailEvent extends BaseObject implements Persistent $keys[3] => $this->getEmailEventFrom(), $keys[4] => $this->getEmailEventTo(), $keys[5] => $this->getEmailEventSubject(), - $keys[6] => $this->getEmailEventBody(), + $keys[6] => $this->getPrfUid(), ); return $result; } @@ -652,7 +652,7 @@ abstract class BaseEmailEvent extends BaseObject implements Persistent $this->setEmailEventSubject($value); break; case 6: - $this->setEmailEventBody($value); + $this->setPrfUid($value); break; } // switch() } @@ -702,7 +702,7 @@ abstract class BaseEmailEvent extends BaseObject implements Persistent } if (array_key_exists($keys[6], $arr)) { - $this->setEmailEventBody($arr[$keys[6]]); + $this->setPrfUid($arr[$keys[6]]); } } @@ -740,8 +740,8 @@ abstract class BaseEmailEvent extends BaseObject implements Persistent $criteria->add(EmailEventPeer::EMAIL_EVENT_SUBJECT, $this->email_event_subject); } - if ($this->isColumnModified(EmailEventPeer::EMAIL_EVENT_BODY)) { - $criteria->add(EmailEventPeer::EMAIL_EVENT_BODY, $this->email_event_body); + if ($this->isColumnModified(EmailEventPeer::PRF_UID)) { + $criteria->add(EmailEventPeer::PRF_UID, $this->prf_uid); } @@ -808,7 +808,7 @@ abstract class BaseEmailEvent extends BaseObject implements Persistent $copyObj->setEmailEventSubject($this->email_event_subject); - $copyObj->setEmailEventBody($this->email_event_body); + $copyObj->setPrfUid($this->prf_uid); $copyObj->setNew(true); diff --git a/workflow/engine/classes/model/om/BaseEmailEventPeer.php b/workflow/engine/classes/model/om/BaseEmailEventPeer.php index ddde15970..2ed553392 100644 --- a/workflow/engine/classes/model/om/BaseEmailEventPeer.php +++ b/workflow/engine/classes/model/om/BaseEmailEventPeer.php @@ -49,8 +49,8 @@ abstract class BaseEmailEventPeer /** the column name for the EMAIL_EVENT_SUBJECT field */ const EMAIL_EVENT_SUBJECT = 'EMAIL_EVENT.EMAIL_EVENT_SUBJECT'; - /** the column name for the EMAIL_EVENT_BODY field */ - const EMAIL_EVENT_BODY = 'EMAIL_EVENT.EMAIL_EVENT_BODY'; + /** the column name for the PRF_UID field */ + const PRF_UID = 'EMAIL_EVENT.PRF_UID'; /** The PHP to DB Name Mapping */ private static $phpNameMap = null; @@ -63,9 +63,9 @@ abstract class BaseEmailEventPeer * e.g. self::$fieldNames[self::TYPE_PHPNAME][0] = 'Id' */ private static $fieldNames = array ( - BasePeer::TYPE_PHPNAME => array ('EmailEventUid', 'PrjUid', 'EvnUid', 'EmailEventFrom', 'EmailEventTo', 'EmailEventSubject', 'EmailEventBody', ), - BasePeer::TYPE_COLNAME => array (EmailEventPeer::EMAIL_EVENT_UID, EmailEventPeer::PRJ_UID, EmailEventPeer::EVN_UID, EmailEventPeer::EMAIL_EVENT_FROM, EmailEventPeer::EMAIL_EVENT_TO, EmailEventPeer::EMAIL_EVENT_SUBJECT, EmailEventPeer::EMAIL_EVENT_BODY, ), - BasePeer::TYPE_FIELDNAME => array ('EMAIL_EVENT_UID', 'PRJ_UID', 'EVN_UID', 'EMAIL_EVENT_FROM', 'EMAIL_EVENT_TO', 'EMAIL_EVENT_SUBJECT', 'EMAIL_EVENT_BODY', ), + BasePeer::TYPE_PHPNAME => array ('EmailEventUid', 'PrjUid', 'EvnUid', 'EmailEventFrom', 'EmailEventTo', 'EmailEventSubject', 'PrfUid', ), + BasePeer::TYPE_COLNAME => array (EmailEventPeer::EMAIL_EVENT_UID, EmailEventPeer::PRJ_UID, EmailEventPeer::EVN_UID, EmailEventPeer::EMAIL_EVENT_FROM, EmailEventPeer::EMAIL_EVENT_TO, EmailEventPeer::EMAIL_EVENT_SUBJECT, EmailEventPeer::PRF_UID, ), + BasePeer::TYPE_FIELDNAME => array ('EMAIL_EVENT_UID', 'PRJ_UID', 'EVN_UID', 'EMAIL_EVENT_FROM', 'EMAIL_EVENT_TO', 'EMAIL_EVENT_SUBJECT', 'PRF_UID', ), BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, ) ); @@ -76,9 +76,9 @@ abstract class BaseEmailEventPeer * e.g. self::$fieldNames[BasePeer::TYPE_PHPNAME]['Id'] = 0 */ private static $fieldKeys = array ( - BasePeer::TYPE_PHPNAME => array ('EmailEventUid' => 0, 'PrjUid' => 1, 'EvnUid' => 2, 'EmailEventFrom' => 3, 'EmailEventTo' => 4, 'EmailEventSubject' => 5, 'EmailEventBody' => 6, ), - BasePeer::TYPE_COLNAME => array (EmailEventPeer::EMAIL_EVENT_UID => 0, EmailEventPeer::PRJ_UID => 1, EmailEventPeer::EVN_UID => 2, EmailEventPeer::EMAIL_EVENT_FROM => 3, EmailEventPeer::EMAIL_EVENT_TO => 4, EmailEventPeer::EMAIL_EVENT_SUBJECT => 5, EmailEventPeer::EMAIL_EVENT_BODY => 6, ), - BasePeer::TYPE_FIELDNAME => array ('EMAIL_EVENT_UID' => 0, 'PRJ_UID' => 1, 'EVN_UID' => 2, 'EMAIL_EVENT_FROM' => 3, 'EMAIL_EVENT_TO' => 4, 'EMAIL_EVENT_SUBJECT' => 5, 'EMAIL_EVENT_BODY' => 6, ), + BasePeer::TYPE_PHPNAME => array ('EmailEventUid' => 0, 'PrjUid' => 1, 'EvnUid' => 2, 'EmailEventFrom' => 3, 'EmailEventTo' => 4, 'EmailEventSubject' => 5, 'PrfUid' => 6, ), + BasePeer::TYPE_COLNAME => array (EmailEventPeer::EMAIL_EVENT_UID => 0, EmailEventPeer::PRJ_UID => 1, EmailEventPeer::EVN_UID => 2, EmailEventPeer::EMAIL_EVENT_FROM => 3, EmailEventPeer::EMAIL_EVENT_TO => 4, EmailEventPeer::EMAIL_EVENT_SUBJECT => 5, EmailEventPeer::PRF_UID => 6, ), + BasePeer::TYPE_FIELDNAME => array ('EMAIL_EVENT_UID' => 0, 'PRJ_UID' => 1, 'EVN_UID' => 2, 'EMAIL_EVENT_FROM' => 3, 'EMAIL_EVENT_TO' => 4, 'EMAIL_EVENT_SUBJECT' => 5, 'PRF_UID' => 6, ), BasePeer::TYPE_NUM => array (0, 1, 2, 3, 4, 5, 6, ) ); @@ -192,7 +192,7 @@ abstract class BaseEmailEventPeer $criteria->addSelectColumn(EmailEventPeer::EMAIL_EVENT_SUBJECT); - $criteria->addSelectColumn(EmailEventPeer::EMAIL_EVENT_BODY); + $criteria->addSelectColumn(EmailEventPeer::PRF_UID); } diff --git a/workflow/engine/config/schema.xml b/workflow/engine/config/schema.xml index fae263cea..58470d5d0 100755 --- a/workflow/engine/config/schema.xml +++ b/workflow/engine/config/schema.xml @@ -1255,7 +1255,7 @@ - + @@ -5056,6 +5056,29 @@ + + + + + + + + + + + + + + + + + + + + + +
+ @@ -5075,6 +5098,6 @@ - +
diff --git a/workflow/engine/data/mysql/schema.sql b/workflow/engine/data/mysql/schema.sql index 00f7cccad..f93af3910 100755 --- a/workflow/engine/data/mysql/schema.sql +++ b/workflow/engine/data/mysql/schema.sql @@ -2829,16 +2829,28 @@ CREATE TABLE `CATALOG` PRIMARY KEY (`CAT_UID`, `CAT_TYPE`), KEY `indexType`( `CAT_TYPE`) )ENGINE=InnoDB DEFAULT CHARSET='utf8' COMMENT='Definitions catalog.'; -# This restores the fkey checks, after having unset them earlier -SET FOREIGN_KEY_CHECKS = 1; + + +#----------------------------------------------------------------------------- +#-- TABLE: SCRIPT_TASK +#----------------------------------------------------------------------------- +DROP TABLE IF EXISTS SCRIPT_TASK; +CREATE TABLE SCRIPT_TASK +( + SCRTAS_UID VARCHAR(32) NOT NULL, + PRJ_UID VARCHAR(32) NOT NULL, + ACT_UID VARCHAR(32) NOT NULL, + SCRTAS_OBJ_TYPE VARCHAR(10) default 'TRIGGER' NOT NULL, + SCRTAS_OBJ_UID VARCHAR(32) NOT NULL, + + PRIMARY KEY (SCRTAS_UID) +)ENGINE=InnoDB DEFAULT CHARSET='utf8'; #----------------------------------------------------------------------------- #-- EMAIL_EVENT #----------------------------------------------------------------------------- DROP TABLE IF EXISTS `EMAIL_EVENT`; - - CREATE TABLE `EMAIL_EVENT` ( `EMAIL_EVENT_UID` VARCHAR(32) NOT NULL, @@ -2847,7 +2859,9 @@ CREATE TABLE `EMAIL_EVENT` `EMAIL_EVENT_FROM` VARCHAR(100) default '' NOT NULL, `EMAIL_EVENT_TO` MEDIUMTEXT NOT NULL, `EMAIL_EVENT_SUBJECT` VARCHAR(150) default '' NOT NULL, - `EMAIL_EVENT_BODY` MEDIUMTEXT NOT NULL, + `PRF_UID` VARCHAR(32) default '' NOT NULL, PRIMARY KEY (`EMAIL_EVENT_UID`) )ENGINE=InnoDB DEFAULT CHARSET='utf8'; +# This restores the fkey checks, after having unset them earlier +SET FOREIGN_KEY_CHECKS = 1; \ No newline at end of file diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/EmailEvent.php b/workflow/engine/src/ProcessMaker/BusinessModel/EmailEvent.php index 70a59042d..af935b29c 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/EmailEvent.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/EmailEvent.php @@ -10,7 +10,7 @@ class EmailEvent "EMAIL_EVENT_FROM" => array("type" => "string", "required" => false, "empty" => false, "defaultValues" => array(), "fieldNameAux" => "messageTypeUid"), "EMAIL_EVENT_TO" => array("type" => "string", "required" => false, "empty" => false, "defaultValues" => array(), "fieldNameAux" => "EmailEventUserUid"), "EMAIL_EVENT_SUBJECT" => array("type" => "array", "required" => false, "empty" => true, "defaultValues" => array(), "fieldNameAux" => "EmailEventVariables"), - "EMAIL_EVENT_BODY" => array("type" => "string", "required" => false, "empty" => true, "defaultValues" => array(), "fieldNameAux" => "EmailEventCorrelation") + "PRF_UID" => array("type" => "string", "required" => false, "empty" => true, "defaultValues" => array(), "fieldNameAux" => "EmailEventCorrelation") ); */ @@ -214,8 +214,9 @@ class EmailEvent //Delete file $filesManager = new \ProcessMaker\BusinessModel\FilesManager(); $arrayData = $this->getEmailEventDataByUid($pro_uid, $emailEventUid); + $arrayData = array_change_key_case($arrayData, CASE_UPPER); if(sizeof($arrayData)) { - $prfUid = $arrayData['email_event_body']; + $prfUid = $arrayData['PRF_UID']; $filesManager->deleteProcessFilesManager('',$prfUid); } } @@ -314,7 +315,7 @@ class EmailEvent $criteria->addSelectColumn(\EmailEventPeer::EMAIL_EVENT_FROM); $criteria->addSelectColumn(\EmailEventPeer::EMAIL_EVENT_TO); $criteria->addSelectColumn(\EmailEventPeer::EMAIL_EVENT_SUBJECT); - $criteria->addSelectColumn(\EmailEventPeer::EMAIL_EVENT_BODY); + $criteria->addSelectColumn(\EmailEventPeer::PRF_UID); return $criteria; } catch (\Exception $e) { @@ -442,7 +443,6 @@ class EmailEvent $contentFile = $filesManager->getProcessFileManager($prj_uid, $prfUid); \PMFSendMessage($appUID, $arrayData[3], $arrayData[4], '', '', $arrayData[5], $contentFile['prf_filename'], array()); } - \G::pr($arrayData);echo "template: ".$contentFile['prf_filename']; } /** @@ -459,7 +459,7 @@ class EmailEvent $newValues = array(); $rowData = $this->verifyIfEmailEventExistsByPrfUid($oldUid, $projectUid); if(is_array($rowData)) { - $newValues['EMAIL_EVENT_BODY'] = $newUid; + $newValues['PRF_UID'] = $newUid; $this->update($rowData['EMAIL_EVENT_UID'], $newValues); } @@ -481,7 +481,7 @@ class EmailEvent try { $criteria = $this->getEmailEventCriteria(); $criteria->add(\EmailEventPeer::PRJ_UID, $projectUid, \Criteria::EQUAL); - $criteria->add(\EmailEventPeer::EMAIL_EVENT_BODY, $oldUid, \Criteria::EQUAL); + $criteria->add(\EmailEventPeer::PRF_UID, $oldUid, \Criteria::EQUAL); $rsCriteria = \EmailEventPeer::doSelectRS($criteria); $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); $rsCriteria->next(); diff --git a/workflow/engine/src/ProcessMaker/Services/api.ini b/workflow/engine/src/ProcessMaker/Services/api.ini index 43cff9eb2..ae2e8aab7 100644 --- a/workflow/engine/src/ProcessMaker/Services/api.ini +++ b/workflow/engine/src/ProcessMaker/Services/api.ini @@ -41,6 +41,7 @@ debug = 1 message-type-variable = "ProcessMaker\Services\Api\Project\MessageType\Variable" web-entry-event = "ProcessMaker\Services\Api\Project\WebEntryEvent" message-event-definition = "ProcessMaker\Services\Api\Project\MessageEventDefinition" + script-task = "ProcessMaker\Services\Api\Project\ScriptTask" email-event = "ProcessMaker\Services\Api\Project\EmailEvent" [alias: projects]