He arreglado el código para ejecutar las condiciones en el Case Tracker.
Puedes editar el archivo workflow/engine/classes/ProcessMap.php. En línea 3822, cambia el código de:
Code: Select all public function getCaseTrackerObjectsCriteria($sProcessUID)
{
$aObjects = array();
$aObjects[] = array('CTO_TITLE' => 'char', 'CTO_UID' => 'char', 'CTO_TYPE_OBJ' => 'char', 'CTO_UID_OBJ' => 'char', 'CTO_CONDITION' => 'char', 'CTO_POSITION' => 'integer' );
$oCriteria = new Criteria('workflow');
$oCriteria->add(CaseTrackerObjectPeer::PRO_UID, $sProcessUID);
$oCriteria->addAscendingOrderByColumn(CaseTrackerObjectPeer::CTO_POSITION);
$oDataset = CaseTrackerObjectPeer::doSelectRS($oCriteria);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$oDataset->next();
while ($aRow = $oDataset->getRow()) {
try {
switch ($aRow['CTO_TYPE_OBJ']) {
a:
Code: Select all public function getCaseTrackerObjectsCriteria($sProcessUID)
{
$aObjects = array();
$aObjects[] = array('CTO_TITLE' => 'char', 'CTO_UID' => 'char', 'CTO_TYPE_OBJ' => 'char', 'CTO_UID_OBJ' => 'char', 'CTO_CONDITION' => 'char', 'CTO_POSITION' => 'integer' );
$oCriteria = new Criteria('workflow');
$oCriteria->add(CaseTrackerObjectPeer::PRO_UID, $sProcessUID);
$oCriteria->addAscendingOrderByColumn(CaseTrackerObjectPeer::CTO_POSITION);
$oDataset = CaseTrackerObjectPeer::doSelectRS($oCriteria);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$oDataset->next();
$oCase = new Cases(); //added by ABB
$aCaseInfo = null; //added by ABB
while ($aRow = $oDataset->getRow()) {
try {
//Added by ABB to implement conditions:
$condition = trim($aRow['CTO_CONDITION']);
if ($condition and !empty($_SESSION['APPLICATION'])) {
//only load the case if a condition is present and it hasn't been loaded yet:
if (empty($aCaseInfo)) {
$aCaseInfo = $oCase->LoadCase($_SESSION['APPLICATION']);
}
$pmScript = new PMScript();
$pmScript->setFields($aCaseInfo['APP_DATA']);
$pmScript->setScript($condition);
$pmScript->setExecutedOn(PMScript::CONDITION);
if ($pmScript->evaluate() == false) {
$oDataset->next();
continue;
}
}
//end ABB's code
switch ($aRow['CTO_TYPE_OBJ']) {
Lo he probado este código en la versión 3.3.10.