数据实体对象参考
BPS中使用了DataObject类型的查询,根据SDO规范,这类查询出来的结果需要调用相应的get方法获取属性数值。
例如,需要查询活动实例ID为1的活动的名称,代码如下:
属性 | 名称 | 类型 |
processDefID | 业务流程ID | long |
processDefName | 业务流程名称 | String |
processChName | 业务流程显示名称 | String |
description | 业务流程描述 | String |
currentState | 业务流程当前状态 | int |
versionSign | 业务流程版本标记 | String |
versionDesc | 业务流程版本描述 | String |
currentFlag | 业务流程是否为当前版本的标志 | String |
createTime | 业务流程创建时间 | String |
updateTime | 业务流程更新时间 | String |
operator | 流程部署者 | String |
processDefOwner | 业务流程作者 | String |
packageID | 所属业务流程包ID | String |
packageName | 所属业务流程包名称 | String |
hasActiveInstance | 是否有活动实例 | String |
属性 | 名称 | 类型 |
Id | 活动定义ID | String |
Name | 活动定义名称 | String |
Type | 活动类型 | String |
processDefId | 所属业务流程ID | long |
splitMode | 分支模式 | String |
joinMode | 聚合模式 | String |
Priority | 优先级 | String |
allowAgent | 是否允许代理 | String |
participantType | 活动参与者类型 | String |
Participants | 活动参与者列表 | List |
urlType | URL类型 | String |
urlID | URLID | String |
isSpecifyURL | 是否指定URL | boolean |
appointedParticipants | 指派参与者列表 | List |
allowAppoint | 是否允许指派 | boolean |
multiWorkItem | 是否多工作项 | boolean |
属性 | 名称 | 类型 |
processInstID | 流程实例ID | long |
processInstName | 流程实例名称 | String |
processInstDesc | 流程实例的描述 | String |
creator | 流程实例创建者 | String |
owner | 所属业务流程作者 | String |
currentState | 流程实例的当前状态 | int |
priority | 优先级 | int |
limitNum | 时间限制数 | long |
limitNumDesc | 时间限制描述 | String |
createTime | 流程实例创建时间 | String |
startTime | 流程实例开始时间 | String |
endTime | 流程实例结束时间 | String |
finalTime | 流程实例终止时间 | String |
remindTime | 流程实例提醒时间 | String |
parentProcID | 所属父流程ID | long |
parentActID | 所属父活动ID | long |
processDefID | 所属业务流程ID | long |
isTimeOut | 是否超时 | String |
timeOutNum | 超时数 | long |
timeOutNumDesc | 超时数描述 | String |
updateVersion | 所属更新版本 | String |
processDefName | 所属业务流程名称 | String |
属性 | 名称 | 类型 |
activityInstID | 活动实例ID | long |
activityInstName | 活动实例名称 | String |
activityInstDesc | 活动实例描述 | String |
activityType | 所属活动定义类型 | String |
currentState | 活动实例当前状态 | int |
priority | 优先级 | int |
createTime | 活动实例创建时间 | String |
startTime | 活动实例开始时间 | String |
endTime | 活动实例结束时间 | String |
subProcessID | 子业务流程ID | long |
activityDefID | 所属活动定义ID | String |
processInstID | 所属的流程实例ID | long |
rollbackFlag | 回退标志 | String |
属性 | 名称 | 类型 |
属性 | 名称 | 类型 |
workItemID | 工作项ID | long |
workItemName | 工作项名称 | String |
workItemType | 工作项类型 | String |
workItemDesc | 工作项描述 | String |
currentState | 工作项当前状态 | int |
participant | 参与者 | String |
priority | 优先级 | int |
isTimeOut | 工作项对应的活动实例是否超时 | String |
limitNum | 工作项对应的活动实例的时间限制数 | long |
limitNumDesc | 工作项对应的活动实例的时间限制描述 | String |
createTime | 工作项创建时间 | String |
startTime | 工作项开始时间 | String |
endTime | 工作项结束时间 | String |
finalTime | 工作项终止时间 | String |
remindTime | 工作项提醒时间 | String |
actionURL | 响应URL | String |
processInstID | 所属流程实例ID | long |
activityInstID | 所属活动实例ID | long |
statesList | (暂未使用) | String |
timeOutNum | 工作项对应活动实例的超时数 | int |
timeOutNumDesc | 工作项对应活动实例的超时数描述 | String |
actionMask | 操作码 | String |
processInstName | 所属流程实例的名称 | String |
activityInstName | 所属活动实例的名称 | String |
processDefID | 所属业务流程ID | long |
processDefName | 所属业务流程名称 | String |
processChName | 所属流程显示名称 | String |
activityDefID | 所属活动定义ID | String |
allowAgent | 是否允许代理 | String |
bizState | 业务状态 | int |
assistant | 工作项当前执行者 | String |
urlType | URL类型 | String |
rootProcInstID | 所属根流程实例ID | long |
属性 | 名称 | 类型 |
agentID | 代理关系ID | long |
agentFrom | 委托人 | String |
agentTo | 代理人 | String |
agentToType | 代理人类型 | String |
agentType | 代理方式 | String |
startTime | 生效时间 | String |
endTime | 终止时间 | String |
agentReason | 代理原因 | String |
属性 | 名称 | 类型 |
agentItemID | 代理项ID | long |
itemType | 代理项类型 | String |
itemID | 业务流程ID(或活动定义ID$业务流程ID) | String |
valid | 是否生效 | String |
accessType | 访问权限 | String |
agentID | 代理关系ID | String |
属性 | 名称 | 类型 |
agentScopeID | 代理候选人范围ID | long |
agenterID | 代理人ID | String |
agenterName | 代理人名称 | String |
agenterType | 代理人类型 | String |
personID | 委托人ID | String |
属性 | 名称 | 类型 |
auditRecordID | 审计日志ID | long |
uniqueID | 唯一ID | String |
logOccasion | 记录时机 | String |
actionType | 操作类型 | String |
actionName | 操作名称 | String |
userName | 操作用户 | String |
createTime | 创建时间 | String |
ipAddress | IP地址 | String |
optionLevel | 操作类别 | String |
processDefineID | 业务流程ID | long |
processInstID | 流程实例ID | long |
activityInstID | 活动实例ID | long |
workItemID | 工作项ID | long |
message | 日志正文 | String |
属性 | 名称 | 类型 |
packageID | 业务流程包ID | String |
packageName | 业务流程包名称 | String |
versionDesc | 版本描述 | String |
isPublish | 是否发布 | boolean |
Mode | 部署模式 | String |
属性 | 名称 | 类型 |
packageID | 业务流程包ID | String |
packageName | 业务流程包名称 | String |
processCount | 业务流程数(不重名) | int |
属性 | 名称 | 类型 |
id | 参与者ID | String |
name | 参与者名称 | String |
email | 参与者邮件 | String |
typeCode | 参与者类型 | String |
属性 | 名称 | 类型 |
packageID | 业务流程包ID | String |
packageName | 业务流程包名称 | String |
processDefName | 业务流程名称 | String |
processChName | 业务流程显示名称 | String |
processCount | 流程版本数 | int |
publishedVersion | 发布版本 | String |
lastVersion | 最新版本 | String |
属性 | 名称 | 类型 |
day | 天 | int |
hour | 小时 | int |
minute | 分钟 | int |
属性 | 名称 | 类型 |
id | 参与者ID | String |
type | 参与者类型 | String |
name | 参与者名称 | String |
permission | 操作权限 | String |
participantInfoType | 操作类型 | String |
participantIndex | 执行顺序 | int |
isCurrParticipant | 是否为当前参与者 | boolean |
属性 | 名称 | 类型 |
catalogID | 业务目录UUID | String |
catalogName | 业务目录名称 | String |
parentCatalogID | 父业务目录UUID | String |
order | 业务目录排序 | int |
sequence | 业务目录序列 | String |
description | 业务目录描述 | String |
isLeaf | 是否叶子业务目录 | String |
属性 | 名称 | 类型 |
content | 消息正文 | String |
index | 索引顺序 | String |
from | 用户ID | String |
operateType | 操作类型 | String |
actInstID | 活动实例ID | String |
actDefID | 活动定义ID | String |
workItemID | 工作项ID | String |
time | 记录时间 | String |
相关数据介绍
- 流程相关数据(BPS Relevant Data)主要指与业务流程相关的数据。在WfMC中,流程相关数据被描述为"BPS管理系统通过流程相关数据来确定流程实例状态转移条件,并选择下一个将执行的活动。这些数据可以被BPS应用程序访问并修改。因此,BPS管理软件需要在活动实例之间传递流程相关数据。"
- 根据WfMC对流程相关数据的描述,BPS将每一个流程实例有且仅有那份流程相关数据存放在相关数据区中,该流程下的所有活动实例共享该区域,该区域中放置了BPS的内部数据即内部变量,也可以放置用户自定义的数据。这些数据可以被BPS流程引擎使用,作为流程实例推进和各活动实例状态变迁的依据;也可以被该流程实例所调用的应用程序访问或修改(内部变量是只读的不能修改)。
- 相关数据区中的数据即流程相关数据,仅在一个流程实例的运行范围内有效,并且该数据也只在所属流程实例内可见。
内置变量介绍
在流程的相关数据中加入了一些与业务流程当前运行时环境相关的实例对象作为内部变量,包括:当前流程实例、当前活动实例、当前工作项、父流程相关数据上下文。这些内置变量可以方便的取到当前环境中的工作流实例的数据,可以被当前实例所调用的应用程序访问,但不允许修改。
thisProcessInst
- 定义:当前流程实例,对应的数据实体值为"com.eos.workflow.data.WFProcessInst"类型的JavaBean实体或者DataObject实体,具体的值类型由调用的形参决定。
- 作用域:整个流程层面均可使用,如:简单表达式、触发事件、回退、规则逻辑、相关数据获取等。
- 使用规则:可以直接使用thisProcessInst变量名(表示流程实例对象);也可以取流程实例对象下的属性thisProcessInst/processInstID(表示流程实例ID)。不允许回填相关数据。
thisActivityInst
- 定义:当前活动实例,对应的数据实体为"com.eos.workflow.data.WFActivityInst"类型的JavaBean实体或者DataObject实体,具体的值类型由调用的形参决定。
- 作用域:在活动层面可以使用,如:自动活动、活动上触发事件、规则逻辑、回退、相关数据获取等。如果在不正确的作用域中使用则返回null值。
- 使用规则:可以直接使用thisActivityInst变量名(表示活动实例对象);也可以取流程实例对象下的属性thisActivityInst/activityInstID(表示活动实例ID)。不允许回填相关数据。
thisWorkItem
- 定义:当前工作项,对应的数据实体为"com.eos.workflow.data.WFWorkItem"类型的JavaBean实体或者DataObject实体,具体的值类型由调用的形参决定。
- 作用域:在触发时机为工作项类型的触发事件中可以使用,如:完成工作项等。如果在不正确的作用域中使用则返回null值。
- 使用规则:可以直接使用thisWorkItem变量名(表示活动实例对象);也可以取流程实例对象下的属性thisWorkItem/workItemID(表示活动实例ID)。不允许回填相关数据。
parentContext
- 定义:父流程的相关数据上下文,无对应的实体对象,是一个虚拟的变量可以通过这个变量来获取父流程的流程实例、活动实例或者是再向上获取父流程相关数据。
- 作用域:只有当业务流程被当作子流程调用的时候parentContext可以使用,使用范围同thisProcessInst;如果业务流程没有当做子流程被调用,则没有父流程所以会返回null值。
- 使用规则:不可以直接使用。只可以通过parentContext来获取父流程的一些内部变量,"parentContext/thisProcessInst"表示父流程的当前流程实例对象实体;"parentContext/thisActivityInst/activityInstID"表示父流程的当前活动实例的活动实例ID;"parentContext/parentContext/thisProcessInst"表示父流程的流程实例对象实体(注:当前流程的父流程也被当作子流程调用)。不允许回填相关数据。
复杂表达式中的内置变量
复杂表达式是支持Java语法的boolean表达式,复杂表达式中可以使用相关数据中的任何变量,包括用户自定义的变量、内部变量、未定义的相关数据变量。
- context:当前流程的相关数据上下文对象,用来获取相关数据中的变量,如果变量在相关数据中定义过了则可以直接使用,没必要通过context来获取。如context.get("user"),可以取到相关数据中的path为user的变量。
- thisProcessInst:当前流程实例的类型为com.eos.workflow.data.WFProcessInst的JavaBean对象。可以调用WFProcessInst实例的方法获取流程实例的一些信息。
内置变量使用范例
例1:给一个需要long类型参数的方法中传入流程实例ID
注意
内置变量是只读的,不允许回填相关数据。
例2:给一个需要流程实例对象的方法中传入流程实例对象本身
例3:在连线复杂表达式中判断流程是否超时
例4:在复杂表达式中使用流程实例相关数据中的变量
注意
如果变量已经在流程的相关数据中定义过了,则不需要从context中获取变量,复杂表达式可以写为"user!=null"。
例5:将父流程的当前父活动实例ID传入