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()); }
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()); }
/** * 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'); }