工作流过渡任务

注意:将在版本 16 中添加

简介

工作流转换任务是在工作流的状态转换期间可以执行的操作。每个工作流转换可以链接到一组转换任务。

每个工作流转换任务可以包含以下类型的任务:

  1. 应用定义的操作(由每个 Frappe 应用通过 hooks.py 指定)
  2. 服务器脚本
  3. Webhooks

除此之外,每个转换任务可以是以下两种模式之一:

  1. 同步:这是转换任务的默认模式。当状态转换启动时,所有转换任务会逐个运行。即使其中一个任务失败,转换也会被撤销。
  2. 异步:可以通过勾选“异步”复选框来启用此模式。每个异步转换任务在状态转换完成后运行,这意味着它对状态完成没有影响,并且会在单独的后台作业中独立运行。

应用定义的操作

每个 Frappe 应用通过 ‘workflow_methods’ 钩子来定义它们。

通过 workflow_methods 钩子定义的任何点分路径方法必须接受 doc: Document 作为参数,该参数是正在应用转换的文档。

应用定义的任务示例如下:

# hooks.py
workflow_methods = [{"name": "Create a customer", "method":
                     "myapp.shop.doctype.kirana.create_customer"}]

# myapp/shop/doctype/kirana.py
def create_customer(doc):
    customer = frappe.new_doc("Customer")
    customer.customer_name = "Customer " + doc.name
    customer.customer_type = "Individual"

    customer.save()

如果任何应用提供了这些任务,它们将出现在“任务”下拉菜单中。

如果您是最终用户,您无法自行创建应用定义的操作,必须使用下面提到的服务器脚本。

服务器脚本

这些脚本也接受 doc: Document 参数,并且可以使用“工作流任务”脚本类型进行设置。

然后,这些脚本必须在转换任务中进行链接:

Webhooks

可以通过将 Webhook 的“文档事件”字段设置为 ‘workflow_transition’ 来创建它们:

然后,这些 Webhook 必须在转换任务中进行链接:

  • 工作流状态
  • 工作流操作
  • 工作流