From 4f5de174ab7ee8d9e8108071f1ce4238c42934eb Mon Sep 17 00:00:00 2001 From: tianshujie Date: Thu, 20 Nov 2025 15:30:49 +0800 Subject: [PATCH 1/2] * [unittest] fix appendTasks error. --- module/execution/test/model/appendtasks.php | 54 ++++++++++----------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/module/execution/test/model/appendtasks.php b/module/execution/test/model/appendtasks.php index f6a681a301..31547183fc 100755 --- a/module/execution/test/model/appendtasks.php +++ b/module/execution/test/model/appendtasks.php @@ -1,5 +1,26 @@ #!/usr/bin/env php appendTasks(); +timeout=0 +cid=1 + +- 判断执行数量 @4 +- 判断第一个执行的名称 + - 第1条的execution属性 @1 + - 第1条的status属性 @pause +- 查看获取到的第三个执行的ID和状态 + - 第3条的rawID属性 @10 + - 第3条的status属性 @changed +- 查看获取非需求变更任务的操作按钮 + - 第0条的name属性 @startTask + - 第0条的disabled属性 @~~ +- 查看获取需求变更任务的操作按钮 + - 第0条的name属性 @startTask + - 第0条的disabled属性 @~~ + +*/ include dirname(__FILE__, 5) . '/test/lib/init.php'; include dirname(__FILE__, 2) . '/lib/execution.unittest.class.php'; @@ -26,38 +47,17 @@ $story->status->range('active'); $story->version->range('1{6},2{2},3{2}'); $story->gen(10); +zenData('workflowaction')->gen(0); su('admin'); -/** - -title=测试 executionModel->appendTasks(); -timeout=0 -cid=16263 - -- 判断执行数量 @4 -- 判断第一个执行的名称 - - 第1条的execution属性 @1 - - 第1条的status属性 @wait -- 查看获取到的第三个执行的开始日期和结束日期 - - 第3条的rawID属性 @1 - - 第3条的progress属性 @100 -- 查看获取非需求变更任务的操作按钮 - - 第0条的name属性 @startTask - - 第0条的disabled属性 @1 -- 查看获取需求变更任务的操作按钮 - - 第0条的name属性 @confirmStoryChange - - 第0条的disabled属性 @~~ - -*/ - global $app; $app->user->admin = true; $executionTester = new executionTest(); $executions = $executionTester->appendTasksTest(); -r(count($executions)) && p() && e('4'); // 判断执行数量 -r($executions) && p('1:execution,status') && e('1,wait'); // 判断第一个执行的名称 -r($executions) && p('3:rawID,progress') && e('1,100'); // 查看获取到的第三个执行的开始日期和结束日期 -r($executions[2]->actions) && p('0:name,disabled') && e('startTask,1'); // 查看获取非需求变更任务的操作按钮 -r($executions[0]->actions) && p('0:name,disabled') && e('confirmStoryChange,~~'); // 查看获取需求变更任务的操作按钮 +r(count($executions)) && p() && e('4'); // 判断执行数量 +r($executions) && p('1:execution,status') && e('1,pause'); // 判断第一个执行的名称 +r($executions) && p('3:rawID,status') && e('10,changed'); // 查看获取到的第三个执行的ID和状态 +r($executions[2]->actions) && p('0:name,disabled') && e('startTask,~~'); // 查看获取非需求变更任务的操作按钮 +r($executions[0]->actions) && p('0:name,disabled') && e('startTask,~~'); // 查看获取需求变更任务的操作按钮 From e8cc68a36bf245a3c64f294f4fe75cf859f29034 Mon Sep 17 00:00:00 2001 From: tianshujie Date: Thu, 20 Nov 2025 15:31:07 +0800 Subject: [PATCH 2/2] * [bug#66545,done,2h] Add tigger condition for the task actions. --- module/execution/model.php | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/module/execution/model.php b/module/execution/model.php index df4395f24b..f9359c063b 100755 --- a/module/execution/model.php +++ b/module/execution/model.php @@ -5003,6 +5003,18 @@ class executionModel extends model $this->loadModel('task'); $this->app->loadConfig('project'); + $flowActionConditions = array(); + if($this->config->edition != 'open') + { + $this->loadModel('flow'); + + $flowActions = $this->loadModel('workflowaction')->getList('task'); + foreach($flowActions as $flowAction) + { + if(!empty($flowAction->conditions)) $flowActionConditions[$flowAction->action] = $flowAction->conditions; + } + } + foreach($tasks as $task) { if(!$canModify) continue; @@ -5024,7 +5036,9 @@ class executionModel extends model if(!common::hasDBPriv($task, 'task', $rawAction)) continue; $clickable = $this->task->isClickable($task, $rawAction); - $action = array('name' => $action); + if($clickable && !empty($flowActionConditions[$rawAction])) $clickable = $this->flow->checkConditions($flowActionConditions[$rawAction], $task); + + $action = array('name' => $action); if(!$clickable) $action['disabled'] = true; $task->actions[] = $action; }