diff --git a/WorkflowEngine.php b/WorkflowEngine.php index 718aa11..d86bd6a 100644 --- a/WorkflowEngine.php +++ b/WorkflowEngine.php @@ -706,19 +706,24 @@ class WorkflowEngine { private function checkTransitionCondition(array $transition, array $instanceData): bool { if (!isset($transition['condition'])) { - // A transition without a condition is not automatic, but it is valid to pass through. - // The calling context (findAutomaticTransition) will decide if this is an error. return true; } $condition = $transition['condition']; $data = isset($instanceData['data_json']) ? json_decode($instanceData['data_json'], true) : []; + if (isset($condition['type']) && $condition['type'] === 'all_true') { + if (!isset($condition['fields']) || !is_array($condition['fields'])) return false; + foreach ($condition['fields'] as $f) { + if (empty($data[$f]) || $data[$f] == '0' || $data[$f] == False) return false; + } + return true; + } + $field = $condition['field'] ?? null; $expectedValue = $condition['value'] ?? null; if ($field === null || $expectedValue === null) { - // Malformed condition return false; } diff --git a/_get_instance_details.php b/_get_instance_details.php index d56441d..185f1b8 100644 --- a/_get_instance_details.php +++ b/_get_instance_details.php @@ -57,12 +57,12 @@ $instance = $engine->getInstanceByDefId($person_id, $process_definition_id); $definition = $process['definition_json'] ? json_decode($process['definition_json'], true) : null; $isChecklist = ($definition && isset($definition['type']) && $definition['type'] === 'checklist'); $events = $engine->getEvents($instanceId); + $instanceData = $instance['data_json'] ? json_decode($instance['data_json'], true) : []; ?>