背景

  • 单据页面在提交或者编辑后需要发起其他流程实例或者创建其他单据实例。
  • 流程页面在发起或者审批流转过程中的同意拒绝撤销动作中,需要发起其他的流程实例,或者创建其他单据实例。

操作

  1. 步骤一:注册服务。宜搭首页➔平台管理(首页右上角)➔服务注册。

发起流程实例的服务配置

服务参数
服务参数 版本 服务参数值
类型 统一 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
  1. 步骤二:配置关联规则。如果是单据页面发起流程或创建单据,在表单设计器选中整个页面(点空白的地方)➔右侧添加第三方服务回调➔选择发起流程服务。如果是流程页面发起流程或创建单据,在发起流程的节点设置中➔添加关联规则➔选择发起流程服务。
  2. 步骤三:配置关联规则中第三方服务的参数。

发起流程实例的服务参数
参数名 必填 说明 示例
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请求工具,请求下面的链接。

请求方法: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设置的查询参数界面:
image.png
由于这个接口是有登录态的,如果使用安装chrome浏览器与postman同步cookie的工具的话,则需要手动在header中加上cookie信息,
image.png
cookie可以从登录态的接口返回值中获取:
image.png
第一次的返回接口是这样的:
image.png
报错信息很明显,提示是我们编写的接口只支持GET方法,而宜搭发送HTTP包使用的是POST方法。

第二次的返回的结果是这样的:
image.png

再结合服务端tomcat的access日志
image.png
我们发现带过去的token参数却没有被服务端获取到,原来服务端是从queryString中来获取token参数的,而实际上宜搭发送过去的所有参数都是通过POST方法,Content-Type=application/x-www-form-urlencoded的方式发送过去的,因此服务端没有接收端。

总之,如果接收数据的服务端对于各种错误都能够有非常友好的提示的话,我们是可以非常方便地从上述日志排查过程中得到问题的答案的。