public function itIncrementsOnStartAndDecrementsOnEnd()
 {
     $logger = new WorkflowBackendLogger($this->backend_logger);
     expect($this->backend_logger)->log('[WF] ┌ Start method()', Feedback::DEBUG)->at(0);
     expect($this->backend_logger)->log('[WF] │ ┌ Start subMethod()', Feedback::DEBUG)->at(1);
     expect($this->backend_logger)->log('[WF] │ └ End subMethod()', Feedback::DEBUG)->at(2);
     expect($this->backend_logger)->log('[WF] └ End method()', Feedback::DEBUG)->at(3);
     $logger->start('method');
     $logger->start('subMethod');
     $logger->end('subMethod');
     $logger->end('method');
 }
 /**
  * Apply $rule that was triggered by a change on $artifact
  *
  * @param Tracker_Artifact $artifact
  * @param Tracker_Workflow_Trigger_TriggerRule $rule
  */
 public function process(Tracker_Artifact $artifact, Tracker_Workflow_Trigger_TriggerRule $rule)
 {
     $this->logger->start(__METHOD__, $artifact->getXRef(), $rule->getId());
     $parent = $artifact->getParentWithoutPermissionChecking();
     if ($parent && !$this->parentAlreadyHasTargetValue($parent, $rule)) {
         $this->logger->debug('Parent ' . $parent->getXRef() . ' does not have target value…');
         $processor_strategy = $this->getRuleStrategy($artifact, $rule);
         if ($processor_strategy->allPrecondtionsAreMet()) {
             $this->logger->debug('All preconditions are met…');
             $this->updateParent($parent, $artifact, $rule);
         }
     }
     $this->logger->end(__METHOD__, $artifact->getId(), $rule->getId());
 }
示例#3
0
 public function processTriggers(Tracker_Artifact_Changeset $changeset)
 {
     $this->logger->start(__METHOD__, $changeset->getId());
     $dar_rules = $this->dao->searchForInvolvedRulesIdsByChangesetId($changeset->getId());
     foreach ($dar_rules as $row) {
         $rule = $this->getRuleById($row['rule_id']);
         $this->logger->debug("Found matching rule " . json_encode($rule->fetchFormattedForJson()));
         $this->rules_processor->process($changeset->getArtifact(), $rule);
     }
     $this->logger->end(__METHOD__, $changeset->getId());
 }
示例#4
0
 /**
  * Execute actions after transition happens (if there is one)
  *
  * @param PFUser                     $user               The user who changed things
  * @param Array                      $fields_data        Request field data (array[field_id] => data)
  * @param Tracker_Artifact_Changeset $new_changeset      The changeset that has just been created
  * @param Tracker_Artifact_Changeset $previous_changeset The changeset just before (null for a new artifact)
  *
  * @return void
  */
 public function after(array $fields_data, Tracker_Artifact_Changeset $new_changeset, Tracker_Artifact_Changeset $previous_changeset = null)
 {
     $this->logger->defineFingerprint($new_changeset->getArtifact()->getId());
     $this->logger->start(__METHOD__, $new_changeset->getId(), $previous_changeset ? $previous_changeset->getId() : 'null');
     if (isset($fields_data[$this->getFieldId()])) {
         $transition = $this->getCurrentTransition($fields_data, $previous_changeset);
         if ($transition) {
             $transition->after($new_changeset);
         }
     }
     $this->trigger_rules_manager->processTriggers($new_changeset);
     $this->logger->end(__METHOD__, $new_changeset->getId(), $previous_changeset ? $previous_changeset->getId() : 'null');
 }