---
source: "https://weapp.eteams.cn/build/techdoc/wdoc/index.html#/public/doc/c1e03018-adaf-4004-9098-eb61a1fe4beb"
title: "调用自定义动作流对接方式(V2)"
---

# 一、**自定义动作流介绍**

自定义动作流支持自定义输入、输出参数，借用动作流内、外部集成能力，可以快速完成内部模块间数据集成、内部系统与外部系统间集成。动作流具体配置如下：

![](../assets/003-344203950e.png)

![](../assets/006-c816ca71bb.png)

# 二、**自定义动作流对接&触发方式**

## 0. **参数准备**

首先配置好自定义动作流后，可以按照以下方式获取触发参数：

![](../assets/009-9df7893577.png)

获取到的参数如下：

```json
{
	"customParams": {
		"mainTable": {
			"dataId": "#可选",
			"docType": "#可选"
		}
	},
	"moduleSource": "#可选",
	"esbFlowId": "1764943003169984583"
}
```

参数含义：

*#可选 ：表明该参数为可选参数*

*#必填：表明该参数为必填参数*

*moduleSource：模块来源标识*

*esbFlowId：动作流ID*

封装触发参数时，按照需求替换掉上面的自定义字段值即可。moduleSource传触发模块标识，如果是ecode触发，该字段传ecode。

## 1. **HTTP方式触发动作流**

URL：https://{环境域名}/api/esb/server/event/triggerActionFlow

Method：POST

Content-type：application/json

Body参数即为上述步骤0中准备的触发参数。

**注意：需要走E10登陆验证（eteamsId），动作流不提供后端获取eteamsId机制（涉及安全问题），前端可在登录后获取eteamsid登录凭证。**

## 2. **SDK方式触发动作流**

### **2.1  引入SDK**

```markdown
<dependency>
   <groupId>com.weaver</groupId>
   <artifactId>weaver-esb-server-api</artifactId>
</dependency>
```

注意：如果在ecode中使用SDK需要上传此JAR包。

### **2.2  触发自定义动作流**

```java
@Autowired
private EsbActionFlow esbActionFlow;

/**
* 执行动作流，指定超时时间-自定义触发使用
*
* @param params 触发参数
* @param tenantKey 租户key
* @param timeout 自定义超时时间，单位s
* @return
*/

com.weaver.esb.api.service.EsbActionFlow#customTriggerEsbFlow(com.weaver.esb.api.entity.EventParams, java.lang.String, int)
```

**EventParams需要传的参数：**

1. esbFlowId：动作流ID

2. employeeId：人员ID

3. source：触发源模块标识

4. customParams：自定义触发参数（即为上述步骤0中准备的触发参数）

注意：SDK方式触发动作流，执行消息是通过E10基座MQ发送的，需要确保MQ正常安装并使用。

## 3. ~~**（**~~~~**不推荐使用**~~~~**）唯一值触发自定义动作流**~~

**目前在ecode代码中写死动作流ID参数，已经支持迁入迁出过程中替换，推荐使用动作流ID作为触发动作流的唯一标识**

### **3.1  背景**

目前通过ecode或者js代码中触发自定义动作流，需要传动作流ID。而动作流ID在动作流导入导出或者复制过程中会产生变化。为了解决这一问题，动作流会生成唯一标识，此标识在动作流导入导出、复制过程中不会变化。

### **3.2 获取唯一值**

请求参数中有动作流ID（esbFlowId），用来查询唯一值。

esb\_setting库（私有化情况下，为weaver-esb-setting服务所对应的数据库）查询动作流唯一值SQL：

```sql
select ea.primary_key  from esb_application ea where id = '动作流ID';
```

### **3.3 替换参数**

拿到唯一值后，HTTP方式动作流参数中就不需要传esbFlowId参数，改传uniqueIndent参数（uniqueIndent是步骤3.2中查出的primary\_key）。

SDK方式下EventParams中无需封装esbFlowId参数，改为封装uniqueIndent参数。

注意：唯一值触发动作流，存在同一租户下多个动作流的唯一值相同（比如同一个动作流迁入/复制多次），此时只执行创建时间（create\_time）最新的动作流。
