From 12bb2afbb98f6639e399eff8f83e9c0c5024a468 Mon Sep 17 00:00:00 2001 From: nbm Date: Wed, 5 Oct 2005 07:13:09 +0000 Subject: [PATCH] First-pass at workflow backend i.t.o. administration. --- lib/workflow/workflow.inc.php | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ lib/workflow/workflowstate.inc.php | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ lib/workflow/workflowtransition.inc.php | 114 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ lib/workflow/workflowutil.inc.php | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 325 insertions(+), 0 deletions(-) create mode 100644 lib/workflow/workflow.inc.php create mode 100644 lib/workflow/workflowstate.inc.php create mode 100644 lib/workflow/workflowtransition.inc.php create mode 100644 lib/workflow/workflowutil.inc.php diff --git a/lib/workflow/workflow.inc.php b/lib/workflow/workflow.inc.php new file mode 100644 index 0000000..a1cfc66 --- /dev/null +++ b/lib/workflow/workflow.inc.php @@ -0,0 +1,76 @@ + "id", + "sName" => "name", + "sHumanName" => "human_name", + ); + + var $_bUsePearError = true; + + function getID() { return $this->iId; } + function getName() { return $this->sName; } + function getHumanName() { return $this->sHumanName; } + function setID($iId) { $this->iId = $iId; } + function setName($sName) { $this->sName = $sName; } + function setHumanName($sHumanName) { $this->sHumanName = $sHumanName; } + + function _table () { + return KTUtil::getTableName('workflows'); + } + + // STATIC + function &get($iId) { + return KTEntityUtil::get('KTWorkflow', $iId); + } + + // STATIC + function &createFromArray($aOptions) { + return KTEntityUtil::createFromArray('KTWorkflow', $aOptions); + } + + // STATIC + function &getList($sWhereClause = null) { + return KTEntityUtil::getList2('KTWorkflow', $sWhereClause); + } + + // STATIC + function &getByName($sName) { + return KTEntityUtil::getBy('KTWorkflow', 'name', $sName); + } +} + +?> diff --git a/lib/workflow/workflowstate.inc.php b/lib/workflow/workflowstate.inc.php new file mode 100644 index 0000000..e47a03e --- /dev/null +++ b/lib/workflow/workflowstate.inc.php @@ -0,0 +1,87 @@ + "id", + "iWorkflowId" => "workflow_id", + "sName" => "name", + "sHumanName" => "human_name", + ); + + var $_bUsePearError = true; + + function getId() { return $this->iId; } + function getName() { return $this->sName; } + function getHumanName() { return $this->sHumanName; } + function getWorkflowId() { return $this->iWorkflowId; } + function setId($iId) { $this->iId = $iId; } + function setName($sName) { $this->sName = $sName; } + function setHumanName($sHumanName) { $this->sHumanName = $sHumanName; } + function setWorkflowId($iWorkflowId) { $this->iWorkflowId = $iWorkflowId; } + + function _table () { + return KTUtil::getTableName('workflow_states'); + } + + // STATIC + function &get($iId) { + return KTEntityUtil::get('KTWorkflowState', $iId); + } + + // STATIC + function &createFromArray($aOptions) { + return KTEntityUtil::createFromArray('KTWorkflowState', $aOptions); + } + + // STATIC + function &getList($sWhereClause = null) { + return KTEntityUtil::getList2('KTWorkflowState', $sWhereClause); + } + + // STATIC + function &getByName($sName) { + return KTEntityUtil::getBy('KTWorkflowState', 'name', $sName); + } + + // STATIC + function &getByWorkflow($oWorkflow) { + $iWorkflowId = KTUtil::getId($oWorkflow); + + $aOptions = array('multi' => true); + return KTEntityUtil::getBy('KTWorkflowState', 'workflow_id', $iWorkflowId, $aOptions); + } +} + +?> diff --git a/lib/workflow/workflowtransition.inc.php b/lib/workflow/workflowtransition.inc.php new file mode 100644 index 0000000..620edf0 --- /dev/null +++ b/lib/workflow/workflowtransition.inc.php @@ -0,0 +1,114 @@ + "id", + "iWorkflowId" => "workflow_id", + "sName" => "name", + "sHumanName" => "human_name", + "iTargetStateId" => "target_state_id", + "iGuardPermissionId" => "guard_permission_id", + ); + + var $_bUsePearError = true; + + function getId() { return $this->iId; } + function getName() { return $this->sName; } + function getHumanName() { return $this->sHumanName; } + function getWorkflowId() { return $this->iWorkflowId; } + function getTargetStateId() { return $this->iTargetStateId; } + function getGuardPermissionId() { return $this->iGuardPermissionId; } + + function setId($iId) { $this->iId = $iId; } + function setName($sName) { $this->sName = $sName; } + function setHumanName($sHumanName) { $this->sHumanName = $sHumanName; } + function setWorkflowId($iWorkflowId) { $this->iWorkflowId = $iWorkflowId; } + function setTargetStateId($iTargetStateId) { $this->iTargetStateId = $iTargetStateId; } + function setGuardPermissionId($iGuardPermissionId) { $this->iGuardPermissionId = $iGuardPermissionId; } + + function _table () { + return KTUtil::getTableName('workflow_transitions'); + } + + // STATIC + function &get($iId) { + return KTEntityUtil::get('KTWorkflowTransition', $iId); + } + + // STATIC + function &createFromArray($aOptions) { + return KTEntityUtil::createFromArray('KTWorkflowTransition', $aOptions); + } + + // STATIC + function &getList($sWhereClause = null) { + return KTEntityUtil::getList2('KTWorkflowTransition', $sWhereClause); + } + + // STATIC + function &getByName($sName) { + return KTEntityUtil::getBy('KTWorkflowTransition', 'name', $sName); + } + + // STATIC + function &getByWorkflow($oWorkflow) { + $iWorkflowId = KTUtil::getId($oWorkflow); + + $aOptions = array( + 'multi' => true, + ); + return KTEntityUtil::getBy('KTWorkflowTransition', 'workflow_id', $iWorkflowId, $aOptions); + } + + // STATIC + function &getByTargetState($oState) { + $iStateId = KTUtil::getId($oState); + + $aOptions = array( + 'multi' => true, + ); + return KTEntityUtil::getBy('KTWorkflowTransition', 'target_state_id', $iStateId, $aOptions); + } + + // STATIC + function &getBySourceState($oState) { + return KTWorkflowUtil::getTransitionsFrom($oState); + } +} + +?> diff --git a/lib/workflow/workflowutil.inc.php b/lib/workflow/workflowutil.inc.php new file mode 100644 index 0000000..202f898 --- /dev/null +++ b/lib/workflow/workflowutil.inc.php @@ -0,0 +1,48 @@ +getId()), + ); + $res = DBUtil::runQuery($aQuery); + if (PEAR::isError($res)) { + return $res; + } + $aOptions = array('noid' => true); + foreach ($aTransitionIds as $iTransitionId) { + $res = DBUtil::autoInsert($sTable, array( + 'state_id' => $oState->getId(), + 'transition_id' => $iTransitionId, + ), $aOptions); + if (PEAR::isError($res)) { + return $res; + } + } + return; + } + + function getTransitionsFrom($oState, $aOptions) { + $bIds = KTUtil::arrayGet($aOptions, 'ids'); + $sTable = KTUtil::getTableName('workflow_state_transitions'); + $aQuery = array( + "SELECT transition_id FROM $sTable WHERE state_id = ?", + array($oState->getId()), + ); + $aTransitionIds = DBUtil::getResultArrayKey($aQuery, 'transition_id'); + if (PEAR::isError($aTransitionIds)) { + return $aTransitionIds; + } + if ($bIds) { + return $aTransitionIds; + } + $aRet = array(); + foreach ($aTransitionIds as $iId) { + $aRet[] =& KTWorkflowTransition::get($iId); + } + return $aRet; + } +} + -- libgit2 0.21.4