新业务开通流程变量命名文档

什么是流程变量?

流程在流转过程中需要存储各种过程数据,业务逻辑的实现依赖于这些数据,新服开将这些过程数据称为“流程变量”。

流程变量的重要性

每个流程变量都代表了某种含义,存储了一些信息,大致可以分为以下几类:

  1. 单据信息变量
  2. 表单内容变量
  3. 状态控制变量
  4. 环节资源变量

单据信息变量

单据信息变量存储前台单据信息,大多数信息用于接口交互,这些信息在前端下单后存储到流程变量中,存储之后内容不会发生变化,除非有更新资料的新单据下来。

表单内容变量

表单内容变量是人工环节产生有用户填写,这些内容能控制和左右后续流程的流转,或者用于接口交互。

状态控制变量

这些变量由开发人员写入,用于控制状态,常用于需要知道是否完成某个操作的标识,状态变量一般需要存在状态翻转图,开发人员自己需要控制状态的翻转。

环节资源变量

环节资源变量用于记录资源信息,资源是单据实际占用的某种资源,资源在流转过程中是有状态的,环节资源变量大多数由外系统通过接口反馈给业务开通系统,资源需要展示,接口交互,日志记录。

流程变量的存储

新服开系统中流程变量以纵表的方式存储(key-value),流程变量可以存储成多种数据类型。数据库中存储于表ACT_RU_VARIABLENAME_字段是流程变量的KEY,VALUE根据类型的不同存储于TEXT_或者BYTEARRAY_ID_,若存储于BYTEARRAY_ID_需要关联到ACT_GE_BYTEARRAY.ID_查询到VALUE

流程变量名

根据流程变量的解释我们很清楚能够知道,“流程变量名”就是流程变量的Key,也就是ACT_RU_VARIABLE.NAME_字段。用开发人员的思维方式可以这样理解,每一个流程都关联到一个Map,Map中存储了流程的过程数据,这些数据的含义由Key来控制。

流程变量名的命名规则

数据的含义由变量名控制,因此变量名的命名非常重要,在命名中需要注意以下问题:

  1. 变量名重复
  2. 变量名拼错
  3. 特殊含义变量名规则错误
    变量名根据流程变量的类别不同采取不同的命名规则:

单据信息变量

这些变量信息来源于报文,命名尽量和报文节点名称保持一致,能够合并的变量尽量合并成一个大变量,以减少流程变量数量,降低数据库访问次数。

表单内容变量

表单变量由需求管控,表单变量的命名与需求文档提供的表单一致,在开发过程中表单内容变量存在继承的情况下容易出现变量名重复的问题,例如:接入方式变量会在多个环节出现,这个时候容易理解成同一个含义,而使用了同一个变量名,实际上这些地方出现接入方式含义并不是完全一致的,只有资源选择环节的接入方式是真正含义上的接入方式其它环节只是用于在资源选择环节带出接入方式,因此需要不同的命名。开发人员发现表单中出现命名重复或者变量含义不正确的情况需要及时与需求沟通。

状态控制变量

状态控制变量可用于控制流程流转箭头控制接口发送操作是否完成等功能,状态控制变量只是开发人员使用与业务逻辑无直接关联,不会展示在表单中,状态控制变量命名以$操作名_status命名。

环节资源变量

资源变量名用于标识资源,资源和某个环节绑定存在状态和生命周期,资源变量的命名需要需求和开发人员共同完成,需求确定资源的唯一编码,资源绑定的环节,开发人员需要确定资源的状态。
环节资源变量名的命名如下:

RESOURCE__资源状态__环节活动ID__资源编码__回退服务名__[序号]

资源状态:
CODE NAME
PRE 预占
OLD 老资源

例如:RESOURCE__PRE__provisionOptic__SG_optRoad__gisResRollBackOperation__0

  • RESOURCE是固定开头,代表资源变量
  • PRE表示是预占状态的资源
  • provisionOptic表示资源入库所属的环节
  • SG_optRoad是需求定义的资源编码
  • gisResRollBackOperation表示回退的服务名称
  • 0表示序号,序号是为了应对同时存在多个资源的情况

资源变量名java端应该采用常量的方式,将命名后的名字放在com.ccssoft.smartflow.gd.constants.ResourceConsts中。