全部文档
文档中心工作流最佳实践如何实现驳回

如何实现驳回

大部分审批场景中,后续审批节点需要在某些情况下驳回流程,使得前置节点重新完成任务。以下将通过几个简单的例子描述如何实现驳回逻辑。

驳回在DeepFlow中不是一个固定的配置,需要多个节点结合后共同实现。实现一个驳回逻辑,需要以下几个配置。

  • 一个用户任务节点(审批节点),用来进行操作

  • 一个网关节点,用来判断审批结果(是否驳回/继续向下执行)

  • 一个跳转节点,根据逻辑跳转回到目标节点继续执行

示例如下:



提交节点后,涉及A、B、C三个审批节点:

  • A节点处理时,可驳回至提交

  • B节点处理时,可驳回至提交A节点

  • C节点处理时,可驳回至提交A节点B节点

在基础驳回操作中增加跳转操作,A、B、C节点可跳转的范围依次为:[提交]、[提交A节点]、[提交A节点B节点]



示例如下:



使用态(跳转动作不支持快速处理,需进入任务处理页面):



拓展:若涉及到数据状态变更,例如提交后(A审批前),数据状态为“submitted”,A审批后(B审批前)为“A_approved”,则可以在节点配置监听,当任务创建时/开始后,执行用于更改数据状态的工作流,这样每次驳回后,例如从C驳回A,数据状态则会从“B_approved”更改为“submitted”。

工作流示例:





多人任务不同于单人任务,单人任务是一旦唯一执行人完成任务,整个节点就完成。

多人任务属于多实例的一种,整个节点何时完成要看配置的完成规则(或签、会签、等待特定应答),例如会签是需要所有执行人都完成任务后,取大多数结果作为多人任务的最终输出结果,此时跳转动作就不适用于其中每个单个用户审批,因为这和会签的逻辑是冲突的,跳转一定会结束当前节点并开始一个新的节点,但会签必须等其他用户也审批完成之后多人任务节点才会结束。

因此,要实现多人任务的自由驳回,需要添加多个拒绝动作+排他网关,来实现,可选被驳回的目标节点有几个,就需要配置多个少拒绝动作。

且多人任务的完成规则一定是等待特定应答,只要有人驳回,整个节点就驳回,这样可以满足最后一个审批人的审批结果完全等于多人任务整体节点的审批结果。



DEMO元素:https://alpha.deepfos.com/element-deepflow/3-0-0/edit?elementName=DEMO_BP_reject_03&folderId=DIR32f7b500ec93&moduleId=WKFL3_0&sign=YXBwSWQ9Y3pqbml3MDI0JnNwYWNlPWN6am5pdw%3D%3D

效果:

平行网关的驳回较上述的一条分支的驳回较为特殊

  • 上述基础驳回场景下,可以直接驳回到需要驳回的节点

  • 平行网关中的驳回,按照同样的逻辑,似乎应该驳回到平行网关处,但是,平行网关作为合并时,会等待所有分支流程的到达,如果直接配置跳转到平行网关,会导致流程运行到平行网关时,由于一直等不到跳转节点的运行,而卡死在平行网关处

  • 因此,对于涉及平行网关的驳回,可参考以下流程图

    • 会签驳回之,需要驳回到平行网关之前,因此在平行网关前面配置一个空的没有任何条件的排他网关专门用来做驳回的跳转使用



多实例子流程通过数组变量动态下发流程,因此有两种情况

  • 全部驳回时,和普通的驳回一致,只需要跳转回到「多实例子流程」节点,然后按照之前的数组重新下发流程就好

  • 部分驳回时,由于「多实例子流程」节点具体执行多少条子流程只和数组变量内的成员数量有关,因此只需要想办法修改数组变量中的成员即可

    • 推荐1:目前最直接的方法,就是通过PY节点查询关联的业务数据状态,查询当前全部审批的流程中有多少条驳回了,然后返回对应的已经驳回的业务数据数组,只有驳回的数组进行多实例子流程的下发即可

    • 推荐2:后续会增加直接在任务完成时从UX中获取参数,即可直接从UX中获取想要驳回的数组数量

回到顶部

咨询热线

400-821-9199

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

ctrl+Enter to send