# 数据实体对象参考

BPS中使用了DataObject类型的查询,根据SDO规范,这类查询出来的结果需要调用相应的get方法获取属性数值。

例如,需要查询活动实例ID为1的活动的名称,代码如下:

DataObject criteria=DataFactory.INSTANCE.create("com.primeton.das.criteria","criteriaType");
DataObject pageCond=DataFactory.INSTANCE.create("com.eos.foundation","PageCond");
 
//也可通过BPS的SDO工厂类创建所需的DataObject或查询实体
//DataObject criteria = BPSDataFactory.createWFSDOCriteria(WFActivityInst.class);
//DataObject pageCond = BPSDataFactory.createSDOPageCond();
 
pageCond.set("begin", 0);
pageCond.set("length", 10);
pageCond.set("isCount", true);
criteria.set("_entity", "com.eos.workflow.data.WFActivityInst");
criteria.set("/_and1/_expr1/activityInstID", 1);
List<DataObject> results=wfQueryManager.queryActivityInstances(criteria,pageCond);
results.get(0).getString("activityInstName");
results.get(0).getInt("currentState");

# 业务流程(com.eos.workflow.data.WFProcessDefine)

属性 名称 类型
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

# 活动定义(com.eos.workflow.data.WFActivityDefine)

属性 名称 类型
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

# 流程实例(com.eos.workflow.data.WFProcessInst)

属性 名称 类型
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

# 活动实例(com.eos.workflow.data.WFActivityInst)

属性 名称 类型
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

# 工作项(com.eos.workflow.data.WFWorkItem)

属性 名称 类型
属性 名称 类型
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

# 代理关系(com.eos.workflow.data.WFAgent)

属性 名称 类型
agentID 代理关系ID long
agentFrom 委托人 String
agentTo 代理人 String
agentToType 代理人类型 String
agentType 代理方式 String
startTime 生效时间 String
endTime 终止时间 String
agentReason 代理原因 String

# 代理项(com.eos.workflow.data.WFAgentItem)

属性 名称 类型
agentItemID 代理项ID long
itemType 代理项类型 String
itemID 业务流程ID(或活动定义ID$业务流程ID) String
valid 是否生效 String
accessType 访问权限 String
agentID 代理关系ID String

# 代理候选人(com.eos.workflow.data.WFAgentScope)

属性 名称 类型
agentScopeID 代理候选人范围ID long
agenterID 代理人ID String
agenterName 代理人名称 String
agenterType 代理人类型 String
personID 委托人ID String

# 审计日志记录(com.eos.workflow.data.WFAuditRecord)

属性 名称 类型
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

# 部署选项(com.eos.workflow.data.WFDeployeeOption)

属性 名称 类型
packageID 业务流程包ID String
packageName 业务流程包名称 String
versionDesc 版本描述 String
isPublish 是否发布 boolean
Mode 部署模式 String

# 业务流程包(com.eos.workflow.data.WFPackage)

属性 名称 类型
packageID 业务流程包ID String
packageName 业务流程包名称 String
processCount 业务流程数(不重名) int

# 参与者(com.eos.workflow.data.WFParticipant)

属性 名称 类型
id 参与者ID String
name 参与者名称 String
email 参与者邮件 String
typeCode 参与者类型 String

# 流程分类(com.eos.workflow.data.WFProcessCatalog)

属性 名称 类型
packageID 业务流程包ID String
packageName 业务流程包名称 String
processDefName 业务流程名称 String
processChName 业务流程显示名称 String
processCount 流程版本数 int
publishedVersion 发布版本 String
lastVersion 最新版本 String

# 时间间隔(com.eos.workflow.data.WFTimePeriod)

属性 名称 类型
day int
hour 小时 int
minute 分钟 int

# 参与者信息(com.eos.workflow.data.WIParticipantInfo)

属性 名称 类型
id 参与者ID String
type 参与者类型 String
name 参与者名称 String
permission 操作权限 String
participantInfoType 操作类型 String
participantIndex 执行顺序 int
isCurrParticipant 是否为当前参与者 boolean

# 业务目录(com.eos.workflow.data.WFBusinessCatalog)

属性 名称 类型
catalogID 业务目录UUID String
catalogName 业务目录名称 String
parentCatalogID 父业务目录UUID String
order 业务目录排序 int
sequence 业务目录序列 String
description 业务目录描述 String
isLeaf 是否叶子业务目录 String

# 流程相关消息(com.eos.workflow.data.WFMessage)

属性 名称 类型
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

img

注意

内置变量是只读的,不允许回填相关数据。

# 例2:给一个需要流程实例对象的方法中传入流程实例对象本身

img

# 例3:在连线复杂表达式中判断流程是否超时

img

# 例4:在复杂表达式中使用流程实例相关数据中的变量

img

注意

如果变量已经在流程的相关数据中定义过了,则不需要从context中获取变量,复杂表达式可以写为"user!=null"。

# 例5:将父流程的当前父活动实例ID传入

img

上次更新: 2023/3/20下午3:44:43