/** * Save a context in the current activity execution */ public function save() { $session = PHPSession::singleton(); if (!$session->hasAttribute('activityExecutionUri')) { throw new common_exception_Error('missing activityExecutionUri in Session during RecoveryContext::retrieve()'); } if (!$this->hasRequestParameter('context')) { throw new common_exception_MissingParameter('context'); } $saved = false; $activityExecutionUri = $session->getAttribute('activityExecutionUri'); if (!empty($activityExecutionUri)) { $activityExecution = new core_kernel_classes_Resource($activityExecutionUri); $recoveryService = wfEngine_models_classes_RecoveryService::singleton(); $context = $this->getRequestParameter('context'); if (is_array($context)) { if (count($context) > 0) { $saved = $recoveryService->saveContext($activityExecution, $context); } } else { if (is_null($context) || $context == 'null') { //if the data sent are null [set context to null], we remove it $saved = $recoveryService->removeContext($activityExecution); } } } echo json_encode(array('saved' => $saved)); }
/** * initialize a test method */ public function setUp() { TaoPhpUnitTestRunner::initTest(); $activityExecutionClass = new core_kernel_classes_Class(CLASS_ACTIVITY_EXECUTION); $this->activityExecution = $activityExecutionClass->createInstance('test'); $this->service = wfEngine_models_classes_RecoveryService::singleton(); }
/** * To build the audit trail of a process execution. * Return the list of all activity executions, ordered by creation time, * with their row data. * * @access public * @author Somsack Sipasseuth, <*****@*****.**> * @param Resource processExecution * @param boolean withData * @return array */ public function getExecutionHistory(core_kernel_classes_Resource $processExecution, $withData = false) { $returnValue = array(); $previousProperty = new core_kernel_classes_Property(PROPERTY_ACTIVITY_EXECUTION_PREVIOUS); $followingProperty = new core_kernel_classes_Property(PROPERTY_ACTIVITY_EXECUTION_FOLLOWING); $recoveryService = wfEngine_models_classes_RecoveryService::singleton(); $currentActivityExecutions = $this->getCurrentActivityExecutions($processExecution); $creationTime = array(); $unorderedActivityExecutions = array(); $allActivityExecutions = $processExecution->getPropertyValues($this->processInstancesActivityExecutionsProp); $count = count($allActivityExecutions); for ($i = 0; $i < $count; $i++) { $uri = $allActivityExecutions[$i]; if (common_Utils::isUri($uri)) { $activityExecution = new core_kernel_classes_Resource($uri); $createdOn = (string) $activityExecution->getUniquePropertyValue(new core_kernel_classes_Property(PROPERTY_ACTIVITY_EXECUTION_TIME_CREATED)); if ($withData) { $previousArray = array(); $followingArray = array(); $previous = $activityExecution->getPropertyValues($previousProperty); $countPrevious = count($previous); for ($j = 0; $j < $countPrevious; $j++) { if (common_Utils::isUri($previous[$j])) { $prevousActivityExecution = new core_kernel_classes_Resource($previous[$j]); $previousArray[] = $prevousActivityExecution->getUri(); } } $following = $activityExecution->getPropertyValues($followingProperty); $countFollowing = count($following); for ($k = 0; $k < $countFollowing; $k++) { if (common_Utils::isUri($following[$k])) { $followingActivityExecution = new core_kernel_classes_Resource($following[$k]); $followingArray[] = $followingActivityExecution->getUri(); } } $unorderedActivityExecutions[$uri] = array('activityExecution' => $activityExecution, 'executionOf' => $this->activityExecutionService->getExecutionOf($activityExecution), 'createdOn' => date('d-m-Y G:i:s', $createdOn), 'current' => array_key_exists($activityExecution->getUri(), $currentActivityExecutions), 'status' => $this->activityExecutionService->getStatus($activityExecution), 'ACLmode' => $this->activityExecutionService->getAclMode($activityExecution), 'restrictedRole' => $this->activityExecutionService->getRestrictedRole($activityExecution), 'restrictedUser' => $this->activityExecutionService->getRestrictedUser($activityExecution), 'user' => $this->activityExecutionService->getActivityExecutionUser($activityExecution), 'previous' => $previousArray, 'following' => $followingArray, 'nonce' => $this->activityExecutionService->getNonce($activityExecution), 'context' => $recoveryService->getContext($activityExecution, ''), 'variables' => $this->activityExecutionService->getVariables($activityExecution)); } else { $unorderedActivityExecutions[$uri] = $activityExecution->getUri(); } $creationTime[$uri] = $createdOn; } } asort($creationTime); foreach ($creationTime as $uri => $time) { $returnValue[] = $unorderedActivityExecutions[$uri]; } return (array) $returnValue; }