背景
- 单据页面在提交或者编辑后需要发起其他流程实例或者创建其他单据实例。
- 流程页面在发起或者审批流转过程中的同意拒绝撤销动作中,需要发起其他的流程实例,或者创建其他单据实例。
操作
- 步骤一:注册服务。宜搭首页➔平台管理(首页右上角)➔服务注册。
发起流程实例的服务配置
服务参数
服务参数 | 版本 | 服务参数值 |
---|---|---|
类型 | 统一 | GATEWAY |
名称 | 自定义 | |
管理员 | 自定义 | |
Url相对地址 | 对内版 | /yida/process/startInstance.json |
对外版 | /yida_vpc/process/startInstance.json |
参数名
参数名 | 标签名(中文) | 标签名(英文) |
---|---|---|
appType | 应用ID | appType |
processCode | 流程code | processCode |
formUuid | 表单ID | formUuid |
formDataJson | 表单数据 | formDataJson |
systemToken | 应用秘钥 | systemToken |
userId | 登录人的员工工号 | userId |
language | 语言环境 | language |
deptId | 发起人所在部门号 | deptId |
创建单据实例的服务配置
服务参数
服务参数 | 版本 | 服务参数值 |
---|---|---|
类型 | 统一 | GATEWAY |
名称 | 自定义 | |
管理员 | 自定义 | |
Url相对地址 | 对内版 | /yida/form/saveFormData.json |
对外版 | /yida_vpc/form/saveFormData.json |
参数名
参数名 | 标签名(中文) | 标签名(英文) |
---|---|---|
appType | 应用ID | appType |
formUuid | 表单ID | formUuid |
formDataJson | 表单数据 | formDataJson |
systemToken | 应用秘钥 | systemToken |
userId | 登录人的员工工号 | userId |
language | 语言环境 | language |
- 步骤二:配置关联规则。如果是单据页面发起流程或创建单据,在表单设计器选中整个页面(点空白的地方)➔右侧添加第三方服务回调➔选择发起流程服务。如果是流程页面发起流程或创建单据,在发起流程的节点设置中➔添加关联规则➔选择发起流程服务。
- 步骤三:配置关联规则中第三方服务的参数。
发起流程实例的服务参数
参数名 | 必填 | 说明 | 示例 |
---|---|---|---|
appType | 是 | 应用编码,在应用数据中获取。 | APP_RNGJU5XXXXXXXXXXNX3S |
processCode | 是 | 流程code,在应用数据中获取。 | TPROC—EF6Y4G8WO2FXXXX |
formUuid | 是 | 表单ID,在应用数据中获取。 | FORM-EF6Y4G8WOXXXXXC3FMFQ1G9400RCJ3 |
formDataJson | 是 | 需要携带的参数 | {“被发起流程表单组件id”:”#{提交单据页面组件id}”,”被发起流程表单组件id”:”#{提交单据页面组件id}”},涉及人员搜索框的值传递参考问题➔设置。 |
systemToken | 是 | 应用秘钥,在应用数据中获取。 | 日常环境统一是: hello1234。 |
userId | 是 | 流程发起人的userId,流程如果有配置实例可发起人权限设置,会触发校验。 | 当前登录人:#{LOGINUSER} 创建人:#{creator} 系统账号:yida_pub_account 或者是工号,对内的工号不足6位补零 |
language | 否 | 语言 | zh_CN 或者 en_US,也可置空 |
deptId | 否 | 发起人主职部门 | 可置空 |
创建单据实例的服务参数
参数名 | 必填 | 说明 | 示例 |
---|---|---|---|
appType | 是 | 应用编码,在应用数据中获取。 | APP_RNGJU5XXXXXXXXXXNX3S |
formUuid | 是 | 表单ID,在应用数据中获取。 | FORM-EF6Y4G8WOXXXXXC3FMFQ1G9400RCJ3 |
formDataJson | 是 | 需要携带的参数 | {“被发起流程表单组件id”:”#{提交单据页面组件id}”,”被发起流程表单组件id”:”#{提交单据页面组件id}”},涉及人员搜索框的值传递参考问题➔设置。 |
systemToken | 是 | 应用秘钥,在应用数据中获取。 | 日常环境统一是: hello1234。 |
userId | 是 | 流程发起人的userId,流程如果有配置实例可发起人权限设置,会触发校验。 | 当前登录人:#{LOGINUSER} 创建人:#{creator} 系统账号:yida_pub_account 或者是工号,对内的工号不足6位补零 |
language | 否 | 语言 | zh_CN 或者 en_US,也可置空 |
deptId | 否 | 发起人主职部门 | 可置空 |
问题
- 异常
- 第三方服务回调发起的流程异常? 流程已经发起,跟服务回调无关,请检查发起的流程是否缺少必要的参数。
- 设置
- userId指定为人员搜索框的值不能发起流程? 建议在表单上隐藏工号字段做为userId值传递,使用公式来和人员搜索框进行联动 USERFIELD(
人员搜索框
,”userId”)。 - 人员搜索框的值如何传递给下一个发起的流程表单或者单据表单中的人员搜索框? 用单行输入框组件先获取人员搜索框的工号,默认值配置函数,TEXT(人员搜索框),formDataJson 的写法是 {“目标表单人员搜索框的组件唯一标识符”:#{提交表单获取人搜索框的单行输入框的唯一标识符}}。
- 如何查看回调日志排查错误? 请先安装谷歌插件Talend API Tester - Free Edition 或者类似postman之类的HTTP请求工具,请求下面的链接。
- userId指定为人员搜索框的值不能发起流程? 建议在表单上隐藏工号字段做为userId值传递,使用公式来和人员搜索框进行联动 USERFIELD(
请求方法:POST
请求路径:{HOST}/query/slsLog/queryHookRecords.json
{HOST}参数取值:
- 宜搭对内版:https://yida.alibaba-inc.com
- 宜搭对外版:https://www.aliwork.com | 参数名称 | 数据类型 | 参数含义 | 示例值 | | —- | —- | —- | —- | | queryFrom | String | 开始时间 | 2019-01-01 12:20:00 | | queryTo | String | 结束时间 | 2019-01-31 12:20:00 | | appType | String | 应用编码(可以通过应用设置->应用数据 面板获取) | APP_QEBGH2HXQ84 | | formUuid | String | 表单编码(可以通过应用设置->应用数据 面板获取) | FORM-FFYJRYNK4LJ11 |
下面以宜搭对外版本(www.aliwork.com)为例介绍接口使用和排查过程:
下图是使用Postman设置的查询参数界面:
由于这个接口是有登录态的,如果使用安装chrome浏览器与postman同步cookie的工具的话,则需要手动在header中加上cookie信息,
cookie可以从登录态的接口返回值中获取:
第一次的返回接口是这样的:
报错信息很明显,提示是我们编写的接口只支持GET方法,而宜搭发送HTTP包使用的是POST方法。
第二次的返回的结果是这样的:
再结合服务端tomcat的access日志
我们发现带过去的token参数却没有被服务端获取到,原来服务端是从queryString中来获取token参数的,而实际上宜搭发送过去的所有参数都是通过POST方法,Content-Type=application/x-www-form-urlencoded的方式发送过去的,因此服务端没有接收端。
总之,如果接收数据的服务端对于各种错误都能够有非常友好的提示的话,我们是可以非常方便地从上述日志排查过程中得到问题的答案的。