C#脚本直接发起审批流
本文档介绍如何使用 C# 脚本通过 SDK 直接发起审批流,无 需通过发起流程组件。
业务场景
部分自定义场景下,需要通过代码控制审批流程的发起。在脚本组件或微服务中,可以方便地通过 SDK 提供的能力快速发起审批流,这种方式更加灵活和直观。
适用场景
- 列表行按钮触发审批
- 定时任务自动发起审批
- 条件判断后发起不同的审批流
- 批量发起审批
- 复杂业务逻辑控制审批发起
C#脚本示例
以下是一个在列表行按钮触发审批的示例:
using System;
using System.Linq;
using System.Collections.Generic;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using Chameleon.Common;
using Chameleon.Common.Context;
using Chameleon.Common.Exceptions;
using Chameleon.Common.Models;
using Chameleon.Database;
using Chameleon.SDK;
using Chameleon.SDK.Models.Request.Workflow;
public class ChameleonCSharpScript
{
public async Task<object> ExecuteAsync(ComponentContext context, ChameleonSDK sdk)
{
var obj = context.Request?.List?.FirstOrDefault();
if(obj == null)
return null;
var id = obj._id;
await sdk.WorkflowHelper.LaunchAsync(new WorkflowLaunchRequest{
// 数据对应的实体对象ID
MetaObjectId = "974e7421-7938-4890-b966-58efa9bc1123",
// 当前列表行请求数据ID
BizDataId = obj._id,
// 按这个审批流发起
WorkflowId = "06df2389-10cb-45de-8fcd-e84f49b4558f",
// 发起人(不填会自动取当前登陆人)
LaunchUserId = null,
});
return null;
}
}
参数说明
WorkflowLaunchRequest 参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| MetaObjectId | string | 是 | 数据对应的实体对象ID |
| BizDataId | string | 是 | 业务数据ID |
| WorkflowId | string |