全部文档
文档中心工作流最佳实践概述

概述

由于流程配置的特殊性,单纯的配置项很难理解工作流编排要如何实现一个具体的需求,因此对于在流程编排中需要经常用的配置方式,此处进行统一整理和归纳。

本章节示例的配置方式即为工作流组件推荐的配置方式,同时也建议在流程编排时能够尽量考虑流程图的可读性,尽量保证流程图的整齐显示,方便在复杂情况下后续进行需求的调整,也尽量注意相关逻辑的说明,以便于其他人在查看时能够快速获取流程图的相关含义。

详细的配置信息在对应节点中进行查看,此处只讲解配置的思路和最终配置后的流程图。

较复杂的业务场景已独立为子章节,请点击至对应章节查看,其余较简单的场景在概述章节中简要阐述。

在平行网关中,已经对此部分进行了讲解,但是鉴于该场景较为常见,因此此处再次单独说明。

  • 平行网关可以进行流程的分支拆分和合并,拆分操作可以将流程拆分成多个平行进行的流程分支,合并可以将多个分支合并到一起继续向下运行。

  • 示例如下,先利用「调用子流程」节点进行多个分部分的分开审批,然后进行合并后的统一审批



目前支持流程发起人流程进行中,可以从【我发起的流程】进入流程待办页面,通过【流程记录】控件,进行流程终止。

需要配置的步骤:

  1. 添加流程终止动作:https://docs.deepfos.com/component/deepflow/function/global_settings#id5

  2. 配置UX作为流程待办页面:https://docs.deepfos.com/component/deepflow/function/global_settings#id7

  3. UX中添加流程记录控件:https://docs.deepfos.com/component/deepflow/function/related_elements/UX/WFComponent#id7

用户任务在任务的生成和到期时,需要进行任务的相关信息提醒,此时需要用到用户任务的监听配置。

  • 用户任务的生命周期不能在当前流程中进行干预,因此只能通过监听这种方式在用户任务的进程中,通过启动隔壁专门的通知工作流,实现通知的功能

通过用户任务「任务开始后」监听,可以实现用户任务开始时对相关执行人进行用户任务开始提醒

  • 首先需要配置一个单独的提醒工作流

    • 发送人采用动态配置,读取流程启动参数重传递进来的参数

    • 其他相关配置见「通知」节点的配置说明

  • 用户任务的监听中配置启动工作流

    • 激活计时器配置的首次激活时间为变量:acp$start_time,表示在任务开始时进行用户任务提醒,重复激活等配置根据需要配置

    • 启动工作流选择配置的通知用的工作流

    • 通知人通过启动参数传递给需要启动的工作流

      • 对于单人任务,可以考虑将candidate数组传递给通知工作流,因为assign的生成需要时间,且在候选人有多人的情况下,不会自动生成assign的值

      • 对于多人任务,可以直接传递assign



任务到期的提醒与任务开始的提醒实现方式一致,将激活计时器配置的首次激活时间为变量:acp$due_time即可。

  • 多个通知可以在一个子流程中实现,通过启动参数中传递一个通知类型的字段用来区分,然后在子流程中通过网关判断后走不同分支即可。

综上所述,可以在用户任务的任务进行中,通过监听的方式实现很多自定义的需求,不仅可以用来启动通知的流程进行消息通知,也可以启动一个其他流程,实现其他相关操作,包括记录一些自定义的和业务数据相关的日志等。

工作流中任务数据的状态和业务数据的状态是相互不关联的,因此如果需要修改数据状态,需要通过「PY脚本」「更新数据表」「领域模型」「DeepQL」等节点调用对应数据表的服务,修改对应数据的状态。

对于基础的修改,比如流程开始修改数据状态,可以直接将对应节点关联到流程图中即可,对于单人任务完成后修改状态,也可以直接在流程图中通过节点进行操作。

但是有一下一些问题:

  • 多人任务在任务完成后如果需要修改数据状态或者修改数据,直接配置不能实现

  • 每个单人任务后均配置一个修改数据的节点

    • 极大增加了当前业务流程的复杂度,每增加一个用户任务节点就要增加一个修改数据的节点,同时这种自动化的节点对于流程逻辑的查看没有明显帮助,只会干扰到正常业务逻辑的查看

    • 如果遇到修改逻辑,需要将每一个修改数据的节点均进行调整

基于上述的问题和其他问题,我们推荐通过「用户任务完成后监听」来实现用户任务完成后进行业务数据修改的需求。

同任务提醒一样,这种方式也是通过启动隔壁的工作流来实现的,也就是说需要有一个单独的工作流来配置任务数据的处理,业务主键和要进行的操作应当作为子流程的启动参数传递给数据修改工作流,然后此工作流根据启动参数进行对应的数据修改操作。

  • 关于如何修改数据状态,可根据需要查看「PY脚本」「领域模型」「更新数据表」相关节点的配置说明

  • 任务后的监听配置如下图所示



需求:

PY脚本节点为同步执行,但因脚本执行时间过长导致超时报错。

核心实现逻辑:

  • PY脚本改为【异步】执行

  • PY脚本后增加【等待消息】节点

  • PY脚本中增加入参流程实例ID、增加【发送消息】

具体配置:

  1. 流程设计



    1. 创建消息py_completed,无需添加参数

    2. PY脚本节点:

      1. 添加所需参数proc_id=wfp$proc_id

      2. 调用方式改为异步

    3. PY脚本节点后增加等待消息节点,等待消息py_completed

  2. PY脚本设计



    1. 添加入参proc_id,用来接收工作流传出的流程实例ID

    2. 执行完业务逻辑后,执行发送消息,API文档见:工作流元素 — DeepFOS,send_msg_to_processes的三个参数说明

      1. msg_code:消息编码,本例中为'py_completed'

      2. msg_body:消息体内参数和值,因为本例中未定义消息内的参数,给空即可

      3. processes:要发送的流程实例ID列表

  3. 效果展示

回到顶部

咨询热线

400-821-9199

我们使用 ChatGPT,基于文档中心的内容以及对话上下文回答您的问题。

ctrl+Enter to send