2.5.2.3_工作流

平台默认设置了四个工作项类型(bug、风险、故事、任务)的工作项状态默认流程; 用户可根据需求创建或修改 任意(自定义)类型工作项的工作项状态流程,并可进行状态流转时“流转处理页面”的配置,设置流转前置条件、前处理以及后处理,从而满足整个工作项状态流转的业务需求;

新建工作流

点击右上角“创建流程”按钮,填写工作流基本信息:“标题”和“描述”,保存即可;

设计工作流

点击工作流列表后的“设计”按钮,进入设计界面;

添加流程状态

  • 新建流转状态列表 工作流设计界面,点击左侧下方的“添加流程状态”按钮,填写各属性值,点击保存,提示流程状态新建成功;

    1) 添加状态流转
    配置“当前流程状态”可跳转的“目标状态”,并设置跳转的前置条件(是否显示跳转按钮)以及前后处理条件(状态跳转时的条件判断以及跳转后的后置处理);

    选中一流程状态,点击其右侧界面中的“添加状态流转”按钮,在“新增流转状态”界面,选择目标“流转状态”,并填写“操作名称”即后续工作项界面的状态转换按钮名称;


    选择流转处理页面(页面模块中,表单类型为:流转工作项页面的页面),点击目标状态转换按钮时,弹出该页面,该页面填写保存后状态才可转换完毕;
    (备注:“条件/处理设置”执行完毕后,流程才会流转到“流转处理页面”)

条件设置

  • 前置条件 : 根据设置的条件规则,判断该流程转换按钮是否显示在界面;
  • 前处理 : 根据设置的条件规则,判断状态变更时,当前条件是否满足转换条件;
  • 后处理 : 根据设置的处理类,在状态转换完成后进行相应后置操作;

条件规则
条件规则有两选值:所有条件满足、任一条件满足;
所有条件满足:即即该规则下定义的处理类,需全部满足,流程才可继续往下执行;
任一条件满足:该规则下定义的处理类,满足其中任意一个,流程即可继续往下执行;

处理类
用作判断当前工作项条件是否满足流程继续往下执行的处理类,或可理解为过滤器,当该处理类返回值为true,则流程可继续,返回为false则抛出异常;“前处理”中,可设置“错误信息”,当处理类条件不满足时,则会将设置的“错误信息”抛出,作为错误提示信息;
处理类分为一下五种:

  • 仅允许报告人 :该状态转换,仅该工作项的报告人可执行;
  • 仅允许经办人 :该状态转换,仅该工作项的经办人可执行;
  • 项目角色中的用户 :该状态转换,仅当前项目中勾选有角色的用户可执行;
  • 子任务阻止条件 :该状态转换,仅该工作项的子项满足所设置的状态才可执行;
  • Groovy表达式判断 :该状态转换,仅当满足所写groovy表达式才可执行,系统提供常用groovy方法如下:

1. 判断当前用户是否报告人
描述: 判断当前用户是否报告人;
方法: helper.isOnlyReporterWorkitemBeforeHandler(targetWorkitem);

2. 判断当前用户是否经办人
描述: 判断当前用户是否经办人;
方法: helper.isOnlyAssigneeWorkitemBeforeHandler(targetWorkitem);

3. 判断当前用户是否属于给定的平台角色范围
描述: 当前用户是否属于给定的平台角色范围,参数为:平台角色名称,多个用逗号分隔,返回true/false|helper.isPlatformRole(platformRoleNames);
方法: helper.isPlatformRole(platformRoleNames);
示例: helper.isPlatformRole("需求管理员");helper.isPlatformRole("平台配管","需求管理员");

4. 判断当前用户是否属于项目中的角色范围
描述: 当前用户是否属于给定的项目角色范围,参数为:工作项,项目角色名称(多个用逗号分隔),返回true/false;
方法: helper.isOnlyRoleWorkitemPreconditionHandler(workitem,"");
示例: helper.isOnlyRoleWorkitemPreconditionHandler(targetWorkitem,"项目经理,架构师");

5. 子任务阻止条件
描述: 所有子任务状态必须包含在给定状态列表中,才允许主任务进行状态流转,可传入参数:子任务给定状态(多个用逗号分隔);
方法: helper.isChildWorkitemBeforeHandler(targetWorkitem,childWorkitemStatus);
示例: helper.isChildWorkitemBeforeHandler(targetWorkitem,"to-be-tested,closed");

6. 指定类型子任务阻止条件
描述: 指定子任务状态必须包含/排除在给定状态列表中,才允许主任务进行状态流转,可传入参数:子任务类型,给定状态(多个用逗号分隔),包含或排除childCondition为子工作项条件:子工作项类型;子工作项状态(多个用逗号分隔);包含(contain)或排除(exclude);
方法: helper.isSubtaskBlockBeforeHandler(targetWorkitem,childCondition);
示例: helper.isSubtaskBlockBeforeHandler(targetWorkitem,"bug;to-be-tested,closed;exclude");

7. 判断指定的工作项是否无子工作项或某种类型的子工作项
描述: 判断给定工作项是否无子工作项或某种类型子工作项,参数为:工作项,子工作项类型(子工作项类型编码,如果为空,则表示所有类型,多个类型可用逗号分隔);
方法: helper.isNoChildWorkitemBeforeHandler(targetWorkitem,childWorkitemTypeCodes);
示例: helper.isNoChildWorkitemBeforeHandler(targetWorkitem,'bug,task');

8. 判断工作项某种类型附件是否存在
描述: 判断给定工作项某种类型附件是否存在,参数:workitem,attachmentGroup(附件分组),返回:true/false;
方法: boolean hasWorkitemAttachment(Workitem workitem, String attachmentGroup);
示例: hasWorkitemAttachment(workitem, 'pTest');

9. 获取工作项的属性
描述: 获取当前工作项的下的某个属性;
方法: 前处理:targetWorkitem.xxx,updateWorkitem.xxx;后处理:workitem.xxx, oldWorkitem.xxx;

10. 获取父工作项的属性
描述: 获取当前工作项的父工作项下的某个属性;
方法: 前处理:targetWorkitem.parentWorkitem.xxx, updateWorkitem.parentWorkitem.xxx 后处理:workitem.parentWorkitem.xxx, oldWorkitem.parentWorkitem.xxx;

11. 获取平台用户参数
描述: 获取某个平台用户参数;
方法: userPlatformParams.xxx;
示例: userPlatformParams.qaOwner;

12. 获取平台用户参数
描述:获取当前项目下的某个项目用户参数;
方法:userProjectParams.xxx; 示例:userProjectParams.opsUser;

13. 获取当前用户所属机构负责人
描述: 获取当前用户所属机构负责人,返回负责人用户名;
方法: helper.getCurrentUserOrgManager(); 示例: def manager = helper.getCurrentUserOrgManager();

14. 获取sonar扫描的关键质量结果
描述: 获取sonar扫描的关键质量结果,参数为项目ID,返回字符串,类似构建实例中sonar结果的内容;
方法: helper.getSonarReports(projectId);
示例: helper.getSonarReports(${projectId});

15. 对工作项信息进行扩充
描述: 对工作项信息进行扩充,扩充后,能够获取相关信息,返回扩充后的workitem对象(常常在新建工作项的前后处理中使用);
方法: helper.expandWorkitemInfo(Workitem workitem, boolean includeChild);

16. 设置经办人
描述: 将工作项经办人设置为指定用户;
方法: helper.workitem.setAssignee(userName);

17. 更新子工作项状态
描述: 支持批量将某个工作项下某种类型(子工作项类型)的所有子工作项状态更新为给定的状态;
方法: helper.batchModifyChildWorkitemStatus(workitem,childWorkitemTypeCode,updateStatus);

18. 批量更新工作项状态
描述: 批量更新工作项状态,参数:工作项Ids(workitemIds,多个工作项用逗号分隔),更新的工作项状态值(updateStatus);
方法: helper.batchModifyWorkitemStatus("workitemIds","updateStatus");
示例: helper.batchModifyWorkitemStatus("31,35,47","done");

19. 批量更新工作项某个属性
描述: 批量更新工作项某个属性,参数:工作项Ids(workitemIds,多个工作项用逗号分隔),需要更新的属性名(fieldName),需要更新的属性值(fieldValue);
方法: helper.batchModifyfieldValues(workitemIds,fieldName,fieldValue);
示例: helper.batchModifyfieldValues(workitemIds,"workitemStatus","done");

20. 给工作项打标签
描述: 给工作项打一个或多个标签,支持计数。labelName:增量方式打标签,labelNames:替换方式打标签,已有标签会删除;
方法: workitem.set("labelName","标签名称") //默认不计数; workitem.set("countLabelFlag",true) //需要计数,增加此属性设置; workitem.set("labelNames","标签名称1,标签名称2,...");
示例: workitem.set("labelName","分解失误变更"); workitem.set("countLabelFlag",true);

22. 发通知给指定用户
描述: 发通知给指定用户,参数:工单号(worklistNo),通知内容(worklistOutline),接收人(approver);
方法: helper.sendWorklistNotice(String worklistNo,String worklistOutline, String approver);
示例: helper.sendWorklistNotice("${workitem.workitemKey}","${currentUser}编辑了需求条目${workitem.workitemKey}","${workitem.createUser},${workitem.assignee}");

23. 发起构建流程
描述: 发起指定的构建流程,参数:项目编号(projectCode),构建定义名称(buildDefinitionName),构建参数(buildParams),全局参数(globalData),定时触发时间(executeTime)返回:构建实例(BuildInstance);
方法: helper.executeBuildDefinitionByName(String projectCode, String buildDefinitionName, Map buildParams, Map globalData, Date executeTime);

24. 发起发布流程
描述: 发起指定的发布流程,参数:项目编号(projectCode),发布定义名称(releaseDefinitionName),发布号(releaseVersionNumber),发布参数(releaseParams),全局参数(globalData),定时触发时间(executeTime)返回:发布实例(ReleaseInstance);
方法: helper.startReleaseByName(String projectCode, String releaseDefinitionName, String releaseVersionNumber, Map> releaseParams, Map globalData, Date executeTime);

25.根据CICD实例获取发布的组件的代码库信息
描述: 根据CICD实例获取发布的组件的代码库信息,按照代码提交先后顺序返回结果。参数:构建实例Ids(buildInstanceIds),发布实例Ids(releaseInstanceIds);
方法: List helper.queryDeployComponentCodeRepositorys(Object buildInstanceIds, Object releaseInstanceIds) ;

26.groovy调试方法
描述:打印日志workitem里的内容;
方法:logger.info(JsonUtil.toJson(workitem, true));
示例: logger.info('----* *----' + updateWorkitem.parentWorkitemId);

2)编辑状态流转
选中流转状态,继而选择其下的“流转状态”,点击其后的“编辑”按钮,进入“流转状态”编辑界面(同新增界面),可修改操作名称、流转状态、流转处理页面以及前置条件和前后处理规则,操作不再复述,与新增功能相同;

  • 编辑流程状态
    工作流列表,点击“设计”按钮,进入工作流设计界面,鼠标悬浮在任一“流程状态”上,该流程状态后显示“编辑”按钮,点击进入编辑界面,可进行“状态名称”、“状态类型”以及“顺序”和“颜色”的更改;

  • 删除流程状态
    同编辑流程状态操作,鼠标悬浮在“流程状态”上,显示“删除”按钮,点击,弹出删除提示;

编辑工作流

点击工作流列表后的“编辑”按钮,进入工作流编辑界面,同新增界面功能一致,可进行“流程状态”的新增编辑和删除,以及状态流转的添加、编辑和删除;

删除工作流

点击工作流列表后的“删除”按钮,弹出确定删除提示,若该工作流未被工作项方案所引用,则直接删除,反正提示无法删除;

克隆工作流

点击工作流列表后的“克隆”按钮, 弹出“克隆工作流”界面,可修改标题,点击保存,即克隆成功;

results matching ""

    No results matching ""