# 数据绑定

流程版本展开菜单后有一项Data Exchange的菜单,这里可以管理数据绑定。绑定功能指流程办理或者存盘时保存一份流程实例数据到绑定数据库,该库里的表根据流程表单的数据结构产生,绑定库里的表的列与表单字段一一对应。

如果流程有对应的业务系统,并且想自己保存流程数据用于业务系统中的统计分析,那么就不必开启绑定。绑定功能是为了简化开发过程,节约开发成本而设计的,当然这也是有一定代价的。首先,能够保存的仅仅是表单中已有字段的数据,并不能根据业务系统的逻辑保存一些表单之外的数据,也不能根据一些业务逻辑进行精准的查询统计,所有的查询统计仅针对表单数据。其次,绑定库里的字段因为索引的缺失会影响查询速度,也就是说当流程发起实例的量很大的时候绑定库的查询统计会有一些慢。如果不介意以上两点且想快速开发查询统计页面或者仅仅是对流程数据一年中有个几次统计需求的话那么开启绑定就是适合的选择了。

# 建表

绑定开启后进入Data Exchange菜单会看到STATUS页里有当前流程支持绑定的步骤列表,目前都是未开启状态。

现在我们开始在绑定库里建表,进入Data Exchange里的BINDING页。

我们可以看到此时数据表还没建立,点击Commands中最后那个魔术棒图标就能建表,那之前可以修改表名,默认主表名是流程代码。表创建完后我们还可以看到创建的字段列表,如下图。

将来我们的流程表单上有字段增加或者减少时可以到这里再新增绑定字段。

# 开启

开启流程绑定的入口在工作流编辑器,在工作流属性面板的流程信息页勾选启用绑定开启。

流程每个步骤节点也可以配置是否开启数据绑定,缺省是开启的,如果某个节点不需要绑定可以单独关闭。

开启完毕并保存工作流后,我们回到绑定的状态页,可以看到此时各步骤都已开启了绑定,用户保存或者提交时数据都会被保存到绑定库中。

绑定首次开启并建表完毕后已有的实例数据会被平台新增到绑定库的表中,这个过程会比较长请耐心等候,一般需要数小时左右。

# 查询

绑定库开启后需要向管理员申请绑定库中这个流程对应表的访问权限,请发邮件向管理员申请

申请通过开放权限后,开发者可以看到绑定的表,是否有数据取决于首次新增数据是否完成。

另外开发者还会看到一个额外的META_ENTRY表,该表可以和流程的表相关联按流程实例的状态查询,这个表的重点字段说明如下。

字段名 描述
_entry 流水号
_created 创建时间
_updated 修改时间
_release 是否是正式发起的实例
_draft 是否草稿,草稿意味着发起后未提交或存盘
_state 状态 1 进行中 2 挂起 3 终止 4 已完成
_token 访问令牌

其中_entry可以和绑定表中的_entry字段相关联,_state可用于统计分析用,一般都是统计状态为已完成的流程实例,_token可用于产生一个匿名访问该流水的表单链接,具体为https://form.sjtu.edu.cn/infoplus/form/e{_entry}/view/{_token}。