通过调用 Business Automation Workflow REST API 来处理用户任务

Draft comment:
This topic is shared by BAW, CP4BA, CP4BASaaS. Last updated on 2025-01-20 10:38
Draft comment:
This topic was viewed 83 times since its publication
用户任务分配给一个或多个团队。 某个团队成员申领任务、提供相关信息,然后完成任务。

准备工作

注意: 返回对象列表的 REST API 调用,例如, GET /processesGET /user-tasks 可以包含查询参数,例如模型名称,容器名称或进程标识。 如果参数值指向不存在的对象(例如,由于流程标识包含拼写错误),那么不会抛出错误。 而是调用返回的 JSON 对象包含空列表。 有关 API 调用的信息,请参阅 工作流程 REST API

过程

  1. 显示允许当前用户查看的未申领任务列表。
    未申领任务是处于就绪状态的任务:
    GET /bpm/user-tasks?states=ready
    要过滤任务列表以仅显示特定流程的任务,请在查询中包含模型名称,例如,OrderManagement:
    GET /bpm/user-tasks?model=OrderManagement&states=ready 
    
    或者,可以通过在查询中包含流程标识(例如,2072.3)来显示特定流程实例的任务:
    GET /bpm/user-tasks?process_id=2072.3&states=ready 
    
  2. 用户打开列表中的任务以查看业务数据。
    要显示业务数据,请在查询中包含 optional_parts=data 参数。 要确保用户有权查看和声明任务,请将 actions 属性包含在 optional_parts 参数中。
    例如,如果用户打开任务 2078.3,那么可以使用以下 REST API 调用来显示任务详细信息,并返回用户可以执行的操作:
    GET /bpm/user-tasks/2078.3?optional_parts=data,actions 
    
  3. 用户申领任务。
    例如,如果用户申领任务 2078.3,那么可以使用以下 REST API 调用:
    POST /bpm/user-tasks/2078.3/claim?optional_parts=data 
    
    此任务将处于已申领状态。 返回的用户任务实例对象包含任务所有者的用户标识以及当前设置的变量。
  4. 任务所有者提供所需信息并完成任务。
    任务所需数据输出变量会在 /complete 调用的请求主体中的 JSON 对象中传入。 例如,订单处理员可能需要提供可用仓库库存以及订单总成本的确认信息。
    POST /bpm/user-tasks/2078.3/complete
    ...
    {
       "output":[
          {
             "name":"inStock",
             "data":"Yes"
           }
           {
              "name":"Price",
              "data":"1000",
           }
           {
              "name":"warehouseAddress",
              "data":{
                 "street":"Mystreet", 
                 "houseNo":"12", 
                 "postCode":"1234", 
                 "city":"Mycity" 
                }
            }]
    }

结果

该任务将进入“已完成”状态。 返回的用户任务实例对象包含更新的状态信息、完成时间戳记和更新的变量。

下一步

如果有意使任务失败,那么可以使用以下 REST API 调用来完成带有错误代码和错误数据的任务:
POST /user-tasks/{task_id}/fail

必须在此服务中对结束错误事件建模,并包含匹配的错误代码,这样才能成功调用此 API。 错误数据是可表示错误本身的对象或任何其他对象的 JSON 表示。 例如,要传递一个 JSON 格式的 BO 对象实例,其中包含单个“字符串”类型的变量,应使用以下格式:

{
"code" : "CustomErrorCode",
"data" : "{\"errorString\":\"String for custom error code\"}"
}