PM-3407 "0018218: Self-service value based not accepting USER ID" SOLVED
Issue:
0018218: Self-service value based not accepting USER ID
Cause:
Nuevo requerimiento de funciones
Solution:
La asignacion de tipo "Self Service Value Based Assignment" ahora funciona de la siguiente manera:
- Si se desea definir a un grupo entonces se tendra el siguiente caso:
@@SYS_GROUP_TO_BE_ASSIGNED = "00000000000000000000000groupuid1";
- Si se desea definir a usuarios entonces se tendra el siguiente caso:
@@SYS_GROUP_TO_BE_ASSIGNED = array("000000000000000000000000useruid1", "000000000000000000000000useruid2");
- Por lo que el engine reconocera lo siguiente:
* A un array como un array de UIDs de usuarios
* A un string como un UID de un grupo
This commit is contained in:
@@ -493,15 +493,27 @@ class Cases
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ($APP_UID != '') {
|
if ($APP_UID != '') {
|
||||||
$groupsInstance = new Groups();
|
|
||||||
$groups = $groupsInstance->getActiveGroupsForAnUser($USR_UID);
|
|
||||||
$taskInstance = new Task();
|
$taskInstance = new Task();
|
||||||
|
|
||||||
$taskData = $taskInstance->Load($TAS_UID);
|
$taskData = $taskInstance->Load($TAS_UID);
|
||||||
$tasGroupVariable = str_replace(array('@', '#'), '', $taskData['TAS_GROUP_VARIABLE']);
|
$tasGroupVariable = str_replace(array('@', '#'), '', $taskData['TAS_GROUP_VARIABLE']);
|
||||||
$caseData = $this->LoadCase($APP_UID);
|
$caseData = $this->LoadCase($APP_UID);
|
||||||
|
|
||||||
if (isset($caseData['APP_DATA'][$tasGroupVariable])) {
|
if (isset($caseData['APP_DATA'][$tasGroupVariable])) {
|
||||||
if (trim($caseData['APP_DATA'][$tasGroupVariable]) != '') {
|
$dataVariable = $caseData["APP_DATA"][$tasGroupVariable];
|
||||||
if (in_array(trim($caseData['APP_DATA'][$tasGroupVariable]), $groups)) {
|
|
||||||
|
if (is_array($dataVariable)) {
|
||||||
|
//UIDs of Users
|
||||||
|
if (!empty($dataVariable) && in_array($USR_UID, $dataVariable)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
//UID of Group
|
||||||
|
$dataVariable = trim($dataVariable);
|
||||||
|
|
||||||
|
$group = new Groups();
|
||||||
|
|
||||||
|
if (!empty($dataVariable) && in_array($dataVariable, $group->getActiveGroupsForAnUser($USR_UID))) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -751,10 +751,15 @@ class Derivation
|
|||||||
if ($taskNextDel->getTasAssignType() == "SELF_SERVICE" && trim($taskNextDel->getTasGroupVariable()) != "") {
|
if ($taskNextDel->getTasAssignType() == "SELF_SERVICE" && trim($taskNextDel->getTasGroupVariable()) != "") {
|
||||||
$nextTaskGroupVariable = trim($taskNextDel->getTasGroupVariable(), " @#");
|
$nextTaskGroupVariable = trim($taskNextDel->getTasGroupVariable(), " @#");
|
||||||
|
|
||||||
if (isset($appFields["APP_DATA"][$nextTaskGroupVariable]) && trim($appFields["APP_DATA"][$nextTaskGroupVariable]) != "") {
|
if (isset($appFields["APP_DATA"][$nextTaskGroupVariable])) {
|
||||||
$appAssignSelfServiceValue = new AppAssignSelfServiceValue();
|
$dataVariable = $appFields["APP_DATA"][$nextTaskGroupVariable];
|
||||||
|
$dataVariable = (is_array($dataVariable))? $dataVariable : trim($dataVariable);
|
||||||
|
|
||||||
$appAssignSelfServiceValue->create($appFields["APP_UID"], $iNewDelIndex, array("PRO_UID" => $appFields["PRO_UID"], "TAS_UID" => $nextDel["TAS_UID"], "GRP_UID" => trim($appFields["APP_DATA"][$nextTaskGroupVariable])));
|
if (!empty($dataVariable)) {
|
||||||
|
$appAssignSelfServiceValue = new AppAssignSelfServiceValue();
|
||||||
|
|
||||||
|
$appAssignSelfServiceValue->create($appFields["APP_UID"], $iNewDelIndex, array("PRO_UID" => $appFields["PRO_UID"], "TAS_UID" => $nextDel["TAS_UID"], "GRP_UID" => serialize($dataVariable)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1001,10 +1006,15 @@ class Derivation
|
|||||||
if ($taskNextDel->getTasAssignType() == "SELF_SERVICE" && trim($taskNextDel->getTasGroupVariable()) != "") {
|
if ($taskNextDel->getTasAssignType() == "SELF_SERVICE" && trim($taskNextDel->getTasGroupVariable()) != "") {
|
||||||
$nextTaskGroupVariable = trim($taskNextDel->getTasGroupVariable(), " @#");
|
$nextTaskGroupVariable = trim($taskNextDel->getTasGroupVariable(), " @#");
|
||||||
|
|
||||||
if (isset($aOldFields["APP_DATA"][$nextTaskGroupVariable]) && trim($aOldFields["APP_DATA"][$nextTaskGroupVariable]) != "") {
|
if (isset($aOldFields["APP_DATA"][$nextTaskGroupVariable])) {
|
||||||
$appAssignSelfServiceValue = new AppAssignSelfServiceValue();
|
$dataVariable = $aOldFields["APP_DATA"][$nextTaskGroupVariable];
|
||||||
|
$dataVariable = (is_array($dataVariable))? $dataVariable : trim($dataVariable);
|
||||||
|
|
||||||
$appAssignSelfServiceValue->create($aNewCase["APPLICATION"], $aNewCase["INDEX"], array("PRO_UID" => $aNewCase["PROCESS"], "TAS_UID" => $aSP["TAS_UID"], "GRP_UID" => trim($aOldFields["APP_DATA"][$nextTaskGroupVariable])));
|
if (!empty($dataVariable)) {
|
||||||
|
$appAssignSelfServiceValue = new AppAssignSelfServiceValue();
|
||||||
|
|
||||||
|
$appAssignSelfServiceValue->create($aNewCase["APPLICATION"], $aNewCase["INDEX"], array("PRO_UID" => $aNewCase["PROCESS"], "TAS_UID" => $aSP["TAS_UID"], "GRP_UID" => serialize($dataVariable)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1255,3 +1265,4 @@ class Derivation
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -112,8 +112,13 @@ class AppAssignSelfServiceValue extends BaseAppAssignSelfServiceValue
|
|||||||
$applicationData = $case->unserializeData($row["APP_DATA"]);
|
$applicationData = $case->unserializeData($row["APP_DATA"]);
|
||||||
$taskGroupVariable = trim($row["TAS_GROUP_VARIABLE"], " @#");
|
$taskGroupVariable = trim($row["TAS_GROUP_VARIABLE"], " @#");
|
||||||
|
|
||||||
if ($taskGroupVariable != "" && isset($applicationData[$taskGroupVariable]) && trim($applicationData[$taskGroupVariable]) != "") {
|
if ($taskGroupVariable != "" && isset($applicationData[$taskGroupVariable])) {
|
||||||
$this->create($row["APP_UID"], $row["DEL_INDEX"], array("PRO_UID" => $row["PRO_UID"], "TAS_UID" => $row["TAS_UID"], "GRP_UID" => trim($applicationData[$taskGroupVariable])));
|
$dataVariable = $applicationData[$taskGroupVariable];
|
||||||
|
$dataVariable = (is_array($dataVariable))? $dataVariable : trim($dataVariable);
|
||||||
|
|
||||||
|
if (!empty($dataVariable)) {
|
||||||
|
$this->create($row["APP_UID"], $row["DEL_INDEX"], array("PRO_UID" => $row["PRO_UID"], "TAS_UID" => $row["TAS_UID"], "GRP_UID" => serialize($dataVariable)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
|
|||||||
@@ -338,40 +338,50 @@ class AppCacheView extends BaseAppCacheView
|
|||||||
//Get APP_UIDs
|
//Get APP_UIDs
|
||||||
$group = new Groups();
|
$group = new Groups();
|
||||||
|
|
||||||
$arrayGroup = $group->getActiveGroupsForAnUser($userUid); //Get Groups of User
|
$arrayUid = $group->getActiveGroupsForAnUser($userUid); //Set UIDs of Groups (Groups of User)
|
||||||
|
$arrayUid[] = $userUid; //Set UID of User
|
||||||
|
|
||||||
if (count($arrayGroup) > 0) {
|
$criteria = new Criteria("workflow");
|
||||||
$criteria = new Criteria("workflow");
|
|
||||||
|
|
||||||
$criteria->setDistinct();
|
$criteria->setDistinct();
|
||||||
$criteria->addSelectColumn(AppAssignSelfServiceValuePeer::APP_UID);
|
$criteria->addSelectColumn(AppAssignSelfServiceValuePeer::APP_UID);
|
||||||
$criteria->addSelectColumn(AppAssignSelfServiceValuePeer::DEL_INDEX);
|
$criteria->addSelectColumn(AppAssignSelfServiceValuePeer::DEL_INDEX);
|
||||||
$criteria->addSelectColumn(AppAssignSelfServiceValuePeer::TAS_UID);
|
$criteria->addSelectColumn(AppAssignSelfServiceValuePeer::TAS_UID);
|
||||||
|
|
||||||
$arrayCondition = array();
|
$arrayCondition = array();
|
||||||
$arrayCondition[] = array(AppAssignSelfServiceValuePeer::APP_UID, AppDelegationPeer::APP_UID, Criteria::EQUAL);
|
$arrayCondition[] = array(AppAssignSelfServiceValuePeer::APP_UID, AppDelegationPeer::APP_UID, Criteria::EQUAL);
|
||||||
$arrayCondition[] = array(AppAssignSelfServiceValuePeer::DEL_INDEX, AppDelegationPeer::DEL_INDEX, Criteria::EQUAL);
|
$arrayCondition[] = array(AppAssignSelfServiceValuePeer::DEL_INDEX, AppDelegationPeer::DEL_INDEX, Criteria::EQUAL);
|
||||||
$arrayCondition[] = array(AppAssignSelfServiceValuePeer::TAS_UID, AppDelegationPeer::TAS_UID, Criteria::EQUAL);
|
$arrayCondition[] = array(AppAssignSelfServiceValuePeer::TAS_UID, AppDelegationPeer::TAS_UID, Criteria::EQUAL);
|
||||||
$criteria->addJoinMC($arrayCondition, Criteria::LEFT_JOIN);
|
$criteria->addJoinMC($arrayCondition, Criteria::LEFT_JOIN);
|
||||||
|
|
||||||
$criteria->add(AppDelegationPeer::USR_UID, "", Criteria::EQUAL);
|
$criteria->add(AppDelegationPeer::USR_UID, "", Criteria::EQUAL);
|
||||||
$criteria->add(AppDelegationPeer::DEL_THREAD_STATUS, "OPEN", Criteria::EQUAL);
|
$criteria->add(AppDelegationPeer::DEL_THREAD_STATUS, "OPEN", Criteria::EQUAL);
|
||||||
$criteria->add(AppAssignSelfServiceValuePeer::GRP_UID, $arrayGroup, Criteria::IN);
|
|
||||||
|
|
||||||
$rsCriteria = AppAssignSelfServiceValuePeer::doSelectRS($criteria);
|
$criterionAux = null;
|
||||||
$rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
|
||||||
|
|
||||||
while ($rsCriteria->next()) {
|
foreach ($arrayUid as $value) {
|
||||||
$row = $rsCriteria->getRow();
|
if (is_null($criterionAux)) {
|
||||||
|
$criterionAux = $criteria->getNewCriterion(AppAssignSelfServiceValuePeer::GRP_UID, "%$value%", Criteria::LIKE);
|
||||||
$arrayAppAssignSelfServiceValueData[] = array(
|
} else {
|
||||||
"APP_UID" => $row["APP_UID"],
|
$criterionAux = $criteria->getNewCriterion(AppAssignSelfServiceValuePeer::GRP_UID, "%$value%", Criteria::LIKE)->addOr($criterionAux);
|
||||||
"DEL_INDEX" => $row["DEL_INDEX"],
|
|
||||||
"TAS_UID" => $row["TAS_UID"]
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$criteria->add($criterionAux);
|
||||||
|
|
||||||
|
$rsCriteria = AppAssignSelfServiceValuePeer::doSelectRS($criteria);
|
||||||
|
$rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
||||||
|
|
||||||
|
while ($rsCriteria->next()) {
|
||||||
|
$row = $rsCriteria->getRow();
|
||||||
|
|
||||||
|
$arrayAppAssignSelfServiceValueData[] = array(
|
||||||
|
"APP_UID" => $row["APP_UID"],
|
||||||
|
"DEL_INDEX" => $row["DEL_INDEX"],
|
||||||
|
"TAS_UID" => $row["TAS_UID"]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
//Return
|
//Return
|
||||||
return $arrayAppAssignSelfServiceValueData;
|
return $arrayAppAssignSelfServiceValueData;
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ class AppAssignSelfServiceValueMapBuilder
|
|||||||
|
|
||||||
$tMap->addColumn('TAS_UID', 'TasUid', 'string', CreoleTypes::VARCHAR, true, 32);
|
$tMap->addColumn('TAS_UID', 'TasUid', 'string', CreoleTypes::VARCHAR, true, 32);
|
||||||
|
|
||||||
$tMap->addColumn('GRP_UID', 'GrpUid', 'string', CreoleTypes::VARCHAR, true, 32);
|
$tMap->addColumn('GRP_UID', 'GrpUid', 'string', CreoleTypes::LONGVARCHAR, true, null);
|
||||||
|
|
||||||
} // doBuild()
|
} // doBuild()
|
||||||
|
|
||||||
|
|||||||
@@ -3927,8 +3927,9 @@
|
|||||||
<column name="DEL_INDEX" type="INTEGER" required="true" default="0" />
|
<column name="DEL_INDEX" type="INTEGER" required="true" default="0" />
|
||||||
<column name="PRO_UID" type="VARCHAR" size="32" required="true" />
|
<column name="PRO_UID" type="VARCHAR" size="32" required="true" />
|
||||||
<column name="TAS_UID" type="VARCHAR" size="32" required="true" />
|
<column name="TAS_UID" type="VARCHAR" size="32" required="true" />
|
||||||
<column name="GRP_UID" type="VARCHAR" size="32" required="true" default="" />
|
<column name="GRP_UID" type="LONGVARCHAR" required="true" default="" />
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<table name="LIST_INBOX">
|
<table name="LIST_INBOX">
|
||||||
<vendor type="mysql">
|
<vendor type="mysql">
|
||||||
<parameter name="Name" value="LIST_INBOX"/>
|
<parameter name="Name" value="LIST_INBOX"/>
|
||||||
|
|||||||
@@ -2217,7 +2217,7 @@ CREATE TABLE `APP_ASSIGN_SELF_SERVICE_VALUE`
|
|||||||
`DEL_INDEX` INTEGER default 0 NOT NULL,
|
`DEL_INDEX` INTEGER default 0 NOT NULL,
|
||||||
`PRO_UID` VARCHAR(32) NOT NULL,
|
`PRO_UID` VARCHAR(32) NOT NULL,
|
||||||
`TAS_UID` VARCHAR(32) NOT NULL,
|
`TAS_UID` VARCHAR(32) NOT NULL,
|
||||||
`GRP_UID` VARCHAR(32) default '' NOT NULL
|
`GRP_UID` MEDIUMTEXT default '' NOT NULL
|
||||||
)ENGINE=InnoDB DEFAULT CHARSET='utf8';
|
)ENGINE=InnoDB DEFAULT CHARSET='utf8';
|
||||||
#-----------------------------------------------------------------------------
|
#-----------------------------------------------------------------------------
|
||||||
#-- LIST_INBOX
|
#-- LIST_INBOX
|
||||||
|
|||||||
Reference in New Issue
Block a user