MethodCallActivity
分类: 通用步骤
命名空间: CMS.Plugin.FlowManagement.Domain.FlowBusiness.Activitys
基类: ActionActivity
模块: FlowManagement.Domain
概述
MethodCallActivity(CSharp调用)用于在流程中调用自定义的 C# 方法。通过实现 IMethodExecuter 接口,开发者可以编写自定义的业务逻辑,并在流程中通过此节点调用。这是一种强大的扩展机制,允许在流程中执行复杂的业务逻辑,而无需修改流程引擎本身。
业务场景
适用场景
- 复杂业务逻辑: 需要执行复杂的计算或业务规则
- 系统集成: 调用内部系统的服务或组件
- 数据处理: 对流程数据进行复杂的转换或处理
- 自定义功能: 实现流程节点无法直接支持的功能
- 代码复用: 将通用的业务逻辑封装为可复用的执行器
配置说明
基本配置
| 属性名 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| ExecuterName | string | 是 | - | 执行对象的完整类名(包含命名空间) |
| Action | ActionType | 否 | Execute | 执行时机 |
| IsSynchronous | bool | 否 | true | 是否同步执行 |
ExecuterName
说明: IMethodExecuter 实现类的完整类名(包含命名空间),如 "MyApp.Executers.MyCustomExecuter"。
注意事项:
- 必须是已注册到依赖注入容器的 IMethodExecuter 实现
- 使用完整的类名(命名空间.类名)
- 执行器必须在应用启动时注册
流程上下文
输入参数
通过 ProcessflowEventArgs 访问所有流程上下文数据。
输出参数
执行器返回的字典中的所有键值对都会写入流程上下文。
业务逻辑说明
处理流程
- 从依赖注入容器获取所有 IMethodExecuter 实现
- 查找类名匹配 ExecuterName 的执行器
- 调用执行器的 Execute 方法
- 将返回的数据项写入流程上下文
- 记录日志
依赖服务
| 服务接口 | 用途 |
|---|---|
| IMethodExecuter | 自定义方法执行器接口 |
| Flow.ServiceProvider | 获取注册的执行器 |
使用示例
基本示例
{
"Type": "MethodCallActivity",
"Name": "计算折扣",
"Alias": "CalculateDiscount",
"ExecuterName": "MyApp.Executers.DiscountCalculator",
"Action": "Execute"
}