收藏 分销(赏)

工作流参考手册.doc

上传人:精*** 文档编号:4859698 上传时间:2024-10-15 格式:DOC 页数:140 大小:2.30MB 下载积分:20 金币
下载 相关 举报
工作流参考手册.doc_第1页
第1页 / 共140页
工作流参考手册.doc_第2页
第2页 / 共140页


点击查看更多>>
资源描述
H:\精品资料\建筑精品网原稿ok(删除公文)\建筑精品网5未上传百度 第1章 总体说明 在使用EOS WorkFlow的过程中, 无论是开发者在”开发环境”中定义业务流程, 还是”工作流引擎”控制流程流转, 或是工作流参与者使用的”客户端”, 再或者管理员使用的”管理与监控工具”, 在这期间都会贯穿EOS Workflow 的5个主要对象——流程定义、 活动定义、 流程实例、 活动实例以及工作项。 1.1 EOS工作流开发过程简述 EOS的工作流开发过程能够看作是一个不断迭代的过程, 如下图: 流程定义 流程发布 流程执行 开始 完善功能或需求变更 首先是分析需求, 然后根据需求定义流程, 在这个阶段最主要的工作任务其实是设计, 根据业务需求来设计流程, 这个流程要怎么走, 流程相关的数据如何流动, 流程的参与者如何界定, 与流程相关的业务数据如何流动及保存等等。在这个阶段的工作结果是一个能够发布的流程, 第一次形成的流程可能是一个比较简单的, 并不完善的版本, 可是随着迭代的进行, 这个流程将不断地被修正和改进, 直到形成一个能够使用的版本。 接下来是流程的发布, 流程发布的目的是让工作流引擎能够识别该流程。在开发环境(JBoss)下能够直接在Studio中发布流程, 开发阶段一般用此方法, 在生产环境中一般是先打包, 然后在http://localhost:端口/eosmgr中发布。 流程发布后就能够执行了, 流程在执行阶段叫流程实例, 它有待启动、 运行、 挂起、 完成、 结束、 中止等六种状态。 我们在设计及开发的过程中可能会犯一些错误, 从而导致发布的流程执行不正确, 或者还可能已经开发好的流程满足不了现在的需求, 需要进行调整, 这个时候迭代就开始了。 1.2 概念说明 流程定义: 描述一个完整的业务过程, 它由若干活动组成。包括了流程的基本信息、 流程的开始和结束条件、 组成的活动、 活动间流转的规则、 需要用户执行的工作任务( 工作项) 、 可能调用的应用程序以及流程相关数据等信息。提交到流程定义库( WFProcessDefine) 后会包含流程定义ID( 流程定义的唯一标识) 、 流程定义名称、 版本号、 流程定义描述以及提交时间等描述。 活动定义: 包含在流程定义之中, 代表了一个相对独立的、 逻辑的工作单元。一个活动代表一个需要由相关资源处理, 或者由计算机处理的任务。其中定义了该活动的基本信息、 执行该活动的参与者、 时间限制、 工作项信息、 触发事件、 启动策略等信息。 流程实例: 当流程定义提交、 发布到服务器以后, 就能够启动该流程, 启动时会创立流程定义的一个实例, 叫流程实例。同一个流程定义能够有多个流程实例。每一个流程实例会被保存在流程实例库(WFProcessInst)中, 包括流程实例ID( 唯一标识) 、 流程实例名称、 流程定义ID、 流程实例的状态、 该实例的启动者、 启动时间、 相关数据等信息。 活动实例: 流程实例中的每个活动称为活动实例。每一个活动实例会被保存在活动实例库(WFActivityInst)中, 包括活动实例ID( 唯一标识) 、 活动实例的状态、 所属的活动定义ID以及流程实例ID、 时间限制、 是否超时、 创立时间等信息。 工作项: 表示流程实例在流转过程中为完成某个活动实例所要参与者做的工作。一个活动实例能够对应一个或多个工作项。每个工作项会被保存在工作项库(WFWorkItem)中, 包括工作项ID( 唯一标识) 、 参与者ID、 工作项的状态、 所属的活动实例ID, 流程实例ID等信息。 对象间的主要关系 流程定义和活动定义是在工作流开发阶段所确定; 流程实例、 活动实例和工作项则是在工作流运行阶段确定。 一个流程定义由多个活动定义组成。 一个流程定义能够创立多个流程实例。 一个流程实例包含多个活动实例, 每个活动实例能够包含一个或多个工作项 在一些特定的情况下( 比如, 一个活动要循环执行多次) , 一个活动定义会存在多个活动实例 具体如下图所示: 其它概念 【工作流】 工作流管理联盟( WFMC) 给出的”工作流”定义是: ① 全部或者部分, 由计算机支持或自动处理的业务过程; ② 干预过程、 业务程序的自动化处理, 文档、 信息或者任务按照定义好的规则在参与者间传递, 来完成整个业务目标或者对整个业务目标的完成做贡献。同时, ”工作流”可能由手工组织。 【参与者】 它主要描业务流程在实例化后的运行过程中参与操作的人员、 角色或组织。 【工作流相关数据】 工作流引擎根据工作流相关数据和转换条件进行推进, 工作流相关数据的属性包括数据名称、 数据类型和数据值等。它是工作流引擎执行任务推进的依据。 【转移条件】 主要负责为流程实例的推进提供导航依据, 引擎根据转移条件实现流程的流转。 【聚合模式】 指当流程中的一个活动存在多个前驱活动时, 该活动产生实例的规则将根据”聚合模式”而定。聚合模式包括: 全部聚合/单一聚合/多路聚合(AND/XOR/OR); ”全部聚合”模式表示只有当所有前驱活动都运行结束后才启动该活动实例, 如果存在尚未运行结束的前驱活动, 则该活动处于等待状态。”单一聚合”模式表示只要任何一个前驱活动运行结束, 则该活动即进入运行状态。”多路聚合”模式表示满足条件的前驱活动都完成, 该活动才可进入运行状态。 【分支模式】 当一个活动的后继活动有多个时, 需要确定这些后继活动产生活动实例的规则( 即分支模式) 。分支模式包括: 全部分支/单一分支/多路分支(AND/XOR/OR); ”全部分支”模式表示条件表示式计算结果为"True"的所有活动都产生活动实例; ”单一分支”模式则表示从后继活动中任选一个条件表示式为”True”的活动产生实例。”单一分支”模式下需要指定一个”缺省迁移”, 当所有条件都为”False”时, 此缺省迁移对应的活动则会产生实例。”多路分支”表示该活动的完成会触发所有满足条件的后继活动。 【工作流客户端】 工作流客户端是提供给用户完成工作流任务的浏览, 查询, 执行的界面, 以及工作流程启动的界面。EOS工作流客户端经过web界面的方式提供给用户。 l 按用户和角色取得工作项 l 工作列表的自定义归类 l 工作项的签收、 拒收、 执行、 提醒 l 竞争工作项的处理 l 图形化的启动过程 【工作流管理监控工具】 工作流管理监控工具是为用户提供基于Web方式的工作流实例的管理和监控功能以及业务流程的管理。 l 支持图形化工作流实例的管理 l 支持图形化监控过程实例的运行情况 l 支持图形化业务流程的管理 l 运行期实时数据查询 l 图形化再现流程运行过程 l 工作项的重分配 l 流程统计分析、 工作项统计分析 1.3 相关配置说明 以下是一些有用的配置说明, 关于EOS工作流的具体配置说明请参考附录—〉配置文件wfconfig.xml。 工作流数据连结的配置在哪里 在config/eosconfig.xml文件中的module name="workflow" group name="database"中, 指定了工作流的包名称和unitID。经过包名称及unitID就能够从EOSEJBREGISTER表中获得数据库连接的DATASOURCE和IP地址。 带有工作流的EOS应用一定要采用数据源的方式( 配置了数据源与连接池, 且eosconfig.xml文件中single值为false) 连接数据库, 这样才能保证工作流和业务系统中事务的完整性。而且工作流调度引擎需要连接池来处理对数据库的并发控制, 不能使用JDBC直接连接, 否则在实际的使用中会出现并发控制错误。例如: 使用EOS5.0, 在工作流客户端的”我的任务->待执行的工作任务”执行一个待执行的工作项, 该工作项的任务是调用一个人工活动去查一张表。如果在studio中启动项目server, 功能一切正常, 如果启动外部server, 这个功能有时候正常, 有时候出错, 出错页面的截图和详细的log见附件! ( 注: 出错是不确定的, 有时候连续好几次都报错, 有时候连续好几次都对! ) 在编写工作流的业务自动机( 业务逻辑) 中, 相关的工作流操作( 如: 完成工作流节点, 回退, 设置工作流的相关数据等操作) 和外部的业务操作都要并在一个transaction( 事务) 中。 工作流历史表的相关说明 EOS数据库中存在以WF_H开头的几张表, 这是工作流历史表, 分别对应了流程实例、 活动项实例、 工作项实例等等, 业务上经常需要经过这些历史数据进行统计分析, 至于什么时候进行记录备份, 帮助文档中没有提到。 其实, 在EOS系统配置文件wfconfig.xml中, 定义了历史记录备份的策略, 如下: <group name="trans_history"> <!--转移历史的策略: 可能的值 TIME_BASED( 固定时间转移) |ON_FINISH( 流程实例结束时转移) |NEVER( 不转移) |ON_START( 系统启动时候转移) --> <configValue key="trans_strategy">TIME_BASED</configValue> <!--转移时间点列表: 当trans_strategy配置为TIME_BASED时候有效。表示转移到历史表的时间,格式示例:1:00,2:00,8:18--> <configValue key="time_list">0:30,5:00</configValue> </group> 第2章 建模过程 EOS Studio提供了可视化的开发环境来定义工作流业务流程模型, 提供串行、 分支、 并行、 聚合、 循环、 同步、 子流程等丰富的流程逻辑结构, 以及人工活动、 自动活动、 路由活动等多种活动类型, 并可对这些活动属性进行定义, 如参与者类型、 触发事件、 子流程属性、 时间限制、 回退动作、 多工作项等, 定义属性时可选择不同的数据类型、 可灵活的扩展活动; 能够经过表单数据为活动节点设置动态表单, 其表单数据实现了动态表单的编辑, 为日常工作中表单的定制提供了良好的设计工具。 2.1 流程定义 流程定义由流程属性、 活动属性、 连接线三部分构成。开发者能够根据实际中的业务需要设置流程上的基本属性、 触发事件、 时间限制以及流程启动者。对每一个具体的活动则可根据实际情况设定其运行的方式、 参与者以及调用的应用等信息。完成流程定义的描述后即可提交、 发布。提交后的流程将生成XML格式的流程定义文件, 存入流程定义库中 2.1.1 流程版本 版本号的产生方式如下: 1、 开发人员指定 版本号的格式为: X.Y.Z (其中X>0;Y:0-99;Z:0-99) , 若指定的版本在流程定义库中不存在,则按指定的版本号生成新版本 。若指定的版本在流程定义库中存在, 则覆盖流程定义库中已有的版本 。例如, 某流程在流程定义库中存在1.1.1和1.2.3两个版本。若要提交第三个版本,开发人员指定新版本号1.1.2,那么该流程提交流程定义库的版本号即为1.1.2;若指定版本号为1.1.1,则该流程在提交流程定义库时会覆盖原有1.1.1版本的流程 2、 自动生成新版本 获取流程定义库中同一流程的最大版本,并在此基础上"加1"作为当前流程的版本号。 2.1.2 触发事件 2.1.2.1 触发事件说明 流程触发事件表示按照流程定义中的设置流程实例在运行到某个阶段所需要工作流引擎做某种类型的某个动作。”某个阶段”即为事件的触发时机, ”某种类型”即为事件类型, ”某个动作”即为事件的动作。 触发时机: 表示指定的事件动作在何时触发。EOS WorkFlow提供了创立、 动、 结束、 超时和提醒5个触发时机。 创立: 表示指定的事件在流程实例创立时触发。此时流程实例实际上处于”待启动”的状态, 并没有合适的活动实例产生。简言之, 流程实例此时只是做好运行的准备, 但未真正开始运行。例如: 把田径比赛中的110米栏比作流程实例, 那么创立时的流程实例就相当于已站在助跑器前的运动员们等待发令枪响的那一刻。 启动: 表示指定的事件在流程实例启动时触发。此时, 流程实例已真正处于运行状态了, 流程实例已开始运行, 各活动实例将会相继产生。例如: 流程实例此时的状态若比作110米栏, 就相当于运动员们听到发令枪响冲离起跑线的那一刻。 结束: 表示指定的事件在流程实例结束时触发。即流程实例中所有的活动实例均已完成时触发。 超时: 表示指定的事件在流程实例超时时触发。例如: 若流程的超时时间订为1天, 那么定义的事件将在流程实例启动时开始计时, 并在1天之后触发此事件。 提醒: 表示指定的事件在流程实例指定的提醒时间触发。例如: 若流程的提醒时间订为1小时, 那么定义的事件将在流程实例启动时开始计时, 并在超时前1小时触发此事件。 事件类型: 标明事件动作的类型。EOS WorkFlow提供基于EOS平台的业务逻辑和运算逻辑两种类型。 事件动作: 由开发人员根据具体的业务需求自行定义。能够是一个运算逻辑也能够是一个业务逻辑。 2.1.2.2 触发事件设置方法 【场景】 在流程”启动的同时, 获取指定节点信息并放入该流程实例相关数据的指定节点下。如获取流程信息中创立者节点(WFContext/WFProcessInst/creator), 放入相关数据区Node/creator下。 【分析】 经过【场景】的描述, 我们能够采用流程触发事件的方式实现该需求。分析为: 1、 ”在流程启动的同时……”, 表示触发的时机为启动, 调用方式为同步。这里需要特别注意的是, 调用方式同步和异步的区别。同步是指: 以”同步”的方式调用触发事件, 等待事件运行完成后, 该流程才启动 。 同步是指: 以”异步”的方式调用触发事件, 该流程在启动完触发事件后就启动, 而无需等待触发事件运行完成。 2、 ”获取指定节点信息”为事件动作, 能够用业务逻辑来实现。触发事件中产生的数据还能够在业务逻辑中输出, 这样就能够将这些数据直接设置为相关数据了。 3、 要将步骤2中获取的信息放入该流程实例相关数据的指定节点下, 具体可在事件参数中设置。 输入参数设置为WFContext, 在各类触发事件以及回退事件中, WFContext属于流程实例的相关数据区部分, 这块数据区有固定的数据结构, 具体请见: 3.2.2流程实例数据区。触发事件的数据来源于相关数据区, WFContext是相关数据区中固有的一块区域信息, 这些信息都放在Wfcontext节点下。其中, WFContext数据区内容是流程实例自身的信息, 相关数据区的内容还有流程中产生的过程数据, 即业务数据。 输出参数设置为creator, 目标路径为Node/userID。在触发事件所执行的业务逻辑中会产生一个crator的节点, 把这个节点放入到相关数据区Node/userID下。目标路径: 表示将返回结果存入到流程实例相关数据中的什么位置。如该例中是将调用业务逻辑的返回结果输出到该流程相关数据的Node/userID节点下。注意, 目标路径仅对事件类型为业务逻辑的事件动作有效。 [图-设置触发事件的参数] 注意: 如果调用的事件类型为业务逻辑, 而参数的数据类型为字符串常量或字符串变量, 那么路径中填入的格式必须为: nodeName="value"或nodeName=‘value’( 因为业务逻辑不支持直接传入常量或变量) 例如: 要传入常量tiger到所调用的业务逻辑中, 就必须做如下设置 2.1.3 超时设置 如果想扩展和替换EOS工作流的超时和预警机制, 能够根据工作流配置文件wfconfig.xml中的工作流引擎服务层相关配置 <module name="service"> <group name="timer"> <configValue key="interval">10000</configValue> <configValue key="timelimit_calculator"></configValue> </group> ……………….. 参数timelimit_calculator流程和活动时间限制的计算方法类名称, 该类必须实现接口com.primeton.eos.wf.service.api.TimeLimitCalculator。 配置为空或者不做配置, 表示使用确省实现类: com.primeton.eos.wf.service.TimeLimitCalculatorDefault。 2.1.3.1 时间限制说明 流程的时间限制表示流程启动后必须在多长时间内完成。在流程时间限制的设置中EOS WorkFlow为开发人员提供了指定具体的限制时间、 超时是否进行邮件通知、 是否在超时前进行提醒、 是否发提醒通知等功能。 流程时间限制的计时: 从流程启动时开始计时 流程时间限制的获取: 直接指定、 从相关数据获取( 格式: 3.5.20表示时限为3天5小时20分钟) 发送提醒邮件: EOS WorkFlow可根据流程定义中的具体设置给流程启动者发提醒邮件, 提醒她该流程还有多长时间将超时 发送超时邮件: EOS WorkFlow可根据流程定义中的具体设置给流程启动者发送超时邮件, 告之她该流程已经超时 提醒时间必须小于指定的时间限制 EOS WORKFLOW判断流程或人工活动超时的原理 流程或人工活动的时间限制中设置的限制时间将写入表WFProcessInst或WFWorkItem的limitNum字段中, 单位为毫秒, limitNumDesc是其描述字段; finalTime是时间限制到达后的时间。EOS WorkFlow将当前时间与startTime相减的结果与limitNum比较, 一旦超出时间限制就将isTimeOut字段置为Y, 表示超时; timeOutNum表示超时了多长时间, 在流程结束时写入。如果设置了超时提醒, 该字段可能出现负数, 是未超时的表现, 只有正数才表示超时的时间, timeOutNumDesc是其描述字段。 2.1.3.2 时间设置说明 【描述】 设置流程时间限制包括指定时间限制的值、 提醒时间的值、 决定是否发送超时邮件或提醒邮件 【应用场景】 规定流程A必须在1天内完成, 超时进行通知; 并在超时前10小时发提醒通知 【操作步骤】 1、 双击流程A的编辑区, 弹出属性设置窗口, 点击时间限制选项卡 2、 勾选启用时间限制 3、 指定时间限制为: 1天0小时0分钟 4、 勾选是否按设置的时间限制进行超时通知。此处将会根据wfconfig.xml相关配置给流程启动者发送邮件。 5、 指定提前0天10小时0分钟提醒 6、 勾选是否按设置的提醒时间进行超时预警。此处将会根据wfconfig.xml相关配置给流程启动者发送邮件。 [图-设置流程时间限制1] 说明: 1、 无论是超时通知的邮件还是提醒的邮件, 收件人都是流程启动者 2、 这些邮件的发件人, 可根据具体情况在配置文件 设置$Primeton HOME\eosserver\config目录下的wfconfig.xml设置, 相关部分如下所示: <group name="sendmail"> <configValue key="username">zll</configValue>  <configValue key="password">zll</configValue> <configValue key="mailServer"></configValue>  <configValue key="mailPort">25</configValue> <configValue key="fromMail"></configValue>  <configValue key="fromName">zll</configValue> <configValue key="authLogin">true</configValue> </group> 参数说明: Field名称 可否空 说明 mailServer 是 邮件服务器SMTP地址 mailPort 是 SMTP端口, 一般设置为25 authLogin 是 SMTP服务器是否需要进行用户验证, 设置true则需要进行用户认证, 设置false则不需要进行认证 username 是 SMTP服务器的用户名 password 是 SMTP的用户口令 特别说明: EOS工作流超时提醒只提醒一次。流程实例一旦超时, 就会触发相应的操作将流程实例中的WFProcessInst/isTimeOut节点设置为Y。如果想实现重复提醒功能, 一般的做法是为流程设置超时的触发事件。在超时触发事件中注册一个定时器, 定时扫描该流程实例是否完成, 如果没有完成就执行发放邮件或者短信都通知的操作。 2.1.4 流程启动者 流程启动者表示能够启动某个流程的组织、 角色或人。EOS WorkFlow提供两种流程启动策略:任意人员启动和从组织机构树获取。这样做的目的主要是从实际工作中的安全性考虑,视流程的具体情况限定能够启动该流程的人员范围。 [图-流程启动者] 当流程实例运行的时候, 能够在相关数据区的如下节点xpath找到流程启动者: <WFContext> <WFProcessInst> < creator >tiger</ creator > </ WFProcessInst > </ WFContext > 2.1.5 流程定义特别说明 工作流的自动活动或触发事件调用带事务的业务逻辑的注意事项 因为工作流的事务控制和业务逻辑的事务控制是分开的, 因此, 当工作流的自动活动或触发事件调用了带事务控制的业务逻辑时, 工作流引擎默认忽略业务逻辑中的事务, 这样就存在一个问题: 业务逻辑中出现了异常, 并经过异常线回滚, 这时, 业务数据提交不成功, 可是, 工作流引擎并没有接收到异常, 它会继续往后走, 最终就出现工作流事务和业务事务不一致的现象。 【解决方案和步骤】 建议业务逻辑中不要用异常线回退到回滚, 让异常直接抛出, 这样工作流引擎会接收到异常, 进而做回滚! 【备注】 1) 异常线不能随便使用, 如果一定要用, 最好设置返回值返回, 最后转向出错页面; 2) 使用异常线前还要注意BL方法是否会抛异常, 因为不是所有的BL方法都会抛异常。 2.2 活动定义 EOS WorkFlow提供了六种类型的活动。开始活动、 结束活动、 人工活动、 自动活动、 子流程活动以及路由活动。 活动图元介绍 图元 名称 含义 开始活动 表示一个业务流程的开始。在流程开始活动能够定义流程的启动表单以及业务流程的触发事件。 人工活动 指需要人工干预、 进行某种操作的活动。比如填写表单等。 自动活动 指无需人工干预, 系统自动执行的活动。比如获取系统时间、 往数据库中插入记录等。 子流程 一种特殊的活动, 此活动本身是指向某一个流程, 表示当流程实例运行至此时, 启动另外一个流程。子流程的启动分为同步和异步两种方式。 路由活动 是一种逻辑活动, 根据控制条件判断流程的流向。该活动本身并不执行任何具体的操作。 结束活动 表示一个业务流程的结束。 2.2.1 设置活动基本信息 活动包括: 人工活动、 自动活动、 子流程。 1) 自动活动的基本信息设置如下: · 自动返回结果: – ”是”: 表示执行动作的返回结果全部自动放入相关数据的根路径下。 – ”否”: 表示执行动作的返回结果将不会自动放入相关数据中去。此时, 如要将返回结果中的某项返回到相关数据中, 可在参数选项卡中设置。 –  该项设置仅对调用类型是业务逻辑有效 · 调用方式: – ”同步”: 直到调用的执行动作运行完后当前自动活动才结束 – ”异步”: 当前自动活动在调用执行动作后就结束, 而无需等待执行动作运行完 · 结束方式: – ”自动”: 调用完执行动作后, 工作流引擎自动将当前自动活动结束 – ”人工: ”调用完执行动作后, 引擎不将当前自动活动结束, 而是等待外部调用结束该活动 2) 子流程的基本信息设置如下: · 调用方式: – ”同步”: 以”同步”的方式调用子流程, 等待子流程运行完成后, 该子流程活动才结束 – ”异步”: 以”异步”的方式调用子流程, 当前活动在启动完子流程后就结束, 而无需等待子流程运行完成 · 子流程: 单击【选择…】按钮, 从弹出窗口的资源树中选择子流程或直接输入子流程, 填写规则为: 构件包名.工作流构件名.业务流程名。如果调用的子流程需要输入或输出一些参数请在参数选项卡中设置 2.2.2 聚合模式、 分支模式 活动的”分支”与”聚合”模式在流程定义时设置, 分别描述了活动在运行时何时被触发以及或个运行结束后, 它的后继活动如何被触发。 2.2.2.1 聚合模式 聚合模式, 表示该活动得以触发的方式。它包括”全部聚合( AND) ”、 ”单一聚合( XOR) ”以及”多路聚合( OR) ”三种情况: 1. ”全部聚合”型聚合模式 表示该活动必须等到它的所有前驱活动全部完成才能够触发。 2. ”单一聚合”型聚合模式 表示当该活动的若干前驱活动中只要有一个满足条件的活动完成, 该活动即可被触发。 3. ”多路聚合”型聚合模式 表示该活动必须等到它的所有满足条件的前驱活动全部完成才能够触发。满足条件的前驱活动包括: 1) 它与该活动的连线是”默认值”; 2) 它与该活动连线上条件为”true”; 3) 多路聚合还需要特别说明的是: 多路聚合不一定要设置默认连线, 也就是说一个多路聚合的全部连线都能够设置条件。 【示例】 1. ”全部聚合”型聚合模式示例 [图-”全部聚合”型聚合模式] 如上图所示, ”人工活动3”的”聚合模式( JoinMode)  ”设置为”全部聚合”, 那么只有在它的前驱”人工活动”、 ”人工活动1”, ”人工活动2”都完成后, ”人工活动3”才能够运行。 2. ”单一聚合”型聚合模式示例 [图-”单一聚合”型聚合模式] 如上所示, 由于”人工活动3”的”聚合模式( JoinMode) ”设置为”单一聚合”, 那么根据上面的算法说明, 当”人工活动”完成后, ”人工活动3”就能够运行了。而无需考虑”人工活动1”或”人工活动2”是否完成。 3. ”多路聚合”型聚合模式示例 1) 由前驱活动射出的连线上中有默认值 [图-”多路聚合”型聚合模式] 如上图所示, 由于”人工活动3”的”聚合模式( JoinMode) ”是”多路聚合”而且在处理的过程中”num==6”, 那么根据上面的算法说明由于”人工活动”与”人工活动3”以及”人工活动1”与”人工活动3”的连线上的条件都满足, 因此”人工活动3”在”人工活动”和”人工活动1”完成后被触发。 2) 由前驱活动射出的连线上都设置条件 [图-”多路聚合”型聚合模式] 如上图所示, 由于”活动E”的”聚合模式( JoinMode) ”是”多路聚合”而且在处理的过程中”num==6”, 那么根据上面的算法说明由于”活动B与”活动D”的射出的连线上的条件都满足, 因此”活动B与”活动D”都完成后, 活动E才被触发。 2.2.2.2 分支模式 分支模式, 表示该活动结束后, 它的后继活动的触发情况。它包括”全部分支( AND) ”、 ”单一分支( XOR) ”以及”多路分支(OR)”三种情况: 1. ”全部分支”型分支模式 表示该活动结束后它的所有后继活动将同时被触发。 2. ”单一分支”型分支模式 如果该活动的分支模式为”单一分支”, 那么引擎会根据由该活动”射出”的连接线上的条件进行判断, 决定该触发哪个后继活动。具体分为下面三种情况: 1) 满足条件的连接线所指的活动被触发; 2) 如果有若干个连接线上的条件都满足, 那么比较连接线上的优先级, 优先级高的那条连接线所指的活动将被触发; 3) 如果连接线上的条件都不满足, 那么取”默认值”的那条连接线所指的活动将被触发。 [注]活动的”分支模式”为”单一分支”时, 由它射出的连接线有且只有一条线的取值是”默认值”。 3.”多路分支”型分支模式 如果该活动的分支模式为”多路分支”, 那么引擎会根据由该活动”射出”的连接线上的条件进行判断, 决定触发哪个或哪些后继活动。具体分为下面二种情况: 1) 如果连接线上取”默认值”, 那么由此连接线所指的后继活动会被触发; 2) 如果连接线上的条件满足, 那么由此连接线所指的后继活动会被触发。 3) 多路分支还需要特别说明的是: 多路分支不一定要设置默认连线, 也就是说一个多路分支的全部连线都能够设置条件。 【示例】 1. ”全部分支”型分支模式示例 [图-”全部分支”型分支模式]  如上图所示, 由于A活动的分支模式是”全部分支”, 那么当A活动完成后它后继的所有活动( B、 C、 D) 将同时被触发。 2. ”单一分支”型分支模式示例 1) 由该活动射出的连线上只有一个满足条件时 [图-”单一分支”型分支模式1] 如图所示, 由于”A” 活动的分支模式是”单一分支”而且在处理的过程中”num==6”, 因此由”A”射出的连接线上只有”num > 5”满足条件, 因此”B”活动满足条件被触发。 2) 由该活动射出的连线上有若干个满足条件时 [图-”单一分支”型分支模式2] 如上图所示, 由于”A” 活动的分支模式是”单一分支”而且在处理的过程中”num==1”, 尽管由A指向B和C的两条分支都满足条件, 但指向B的优先级大于指向C的优先级, 因此”B”活动被触发。 3) 由该活动射出的连线上没有一个满足条件时 [图-”单一分支”型分支模式3] 如上图所示, 由于”A” 活动的分支模式是”单一分支”而且在处理的过程中”num==2”, 那么由”A”射出的连接线上没有满足条件的, 因此”D”活动被缺省触发。 3. ”多路分支”型分支模式示例 1) 由活动射出的连线上中有默认值 [图-”多路分支”型分支模式] 如上图所示, 由于”开始活动”的分支模式是”多路分支”而且在处理的过程中”num==6”, 那么根据上面的算法说明, 由”开始活动”射出的连接线上为”默认值”所指的后继活动”人工活动”一定会被触发; 又由于满足”num>5”的条件因此”人工活动1”也会被触发 2) 由活动射出的连线上中没有默认值, 全部设置条件 如上图所示, 由于”开始活动”的”分支模式”是”多路分支”而且在处理的过程中”num==6”, 那么根据上面的算法说明由于射向”活动B与”活动D”的连线上的条件都满足, 因此”活动B与”活动D”在开始活动结束后被触发。 2.2.3 参与者设置 活动参与者实际上是指在流程实例运行过程中, 流程实例”流转”至此时该活动实例所对应的工作项有哪些人能够执行。在流程定义时设置活动的参与者实际上是圈定流程实例运行至此时能够执行该活动实例所对应工作项的人员范围, 能够是机构、 角色或人。 EOS WorkFlow提供了4种能够获取参与者的方式: 组织机构与角色: 参与者由开发人员从机构树中获取 – 只选择一人: 表示该活动所对应的工作项直接分配给该人处理 – – 超过一人: 表示该活动所对应的工作项由这些人中的某个人以”领取”的方式处理 虚拟岗位( 机构+角色) : 表示在不设置岗位的情况下, 由部门+角色共同决定一个人工活动的参与者。 流程启动者: 表示活动参与者为该流程的启动者 活动执行者: 表示活动参与者为某个已完成的活动实例所对应工作项的执行者 从相关数据获取: 表示活动参与者由相关数据指定。由相关数据获取参与者的规则详见从相关数据获取参与者 从规则逻辑获取: 表示活动参与者由某个规则逻辑的返回值确定。由规则逻辑获取参与者的规则详见从规则逻辑获取参与者 特别说明:如果要改写组织机构权限并在参与者设置的时候显示新的组织机构树, 具体操作请参见知识库文档: 组织机构与工作流集成方案.doc 2.2.3.1 虚拟岗位( 机构+角色) 设置参与者 -图 经过机构+角色实现虚拟岗位设置参与者 用角色+机构的方式设置参与者需要特别注意的是, 在该活动激活以前一定要将上图中机构变量路径设置到相关数据区中。 另外, 还有一种方法设置一组机构: 把多个机构写成如下格式: <list>     <org>         <id>1</id>     </org     <org>         <id>2</id>     </org> </list> 这样机构变量路径xpath写成: list/org/id即可。这样, 工作流引擎也会找到多个机构id, 从而实现设置一组机构+角色的要求。如下图所示: 图-设置一组机构变量 2.2.3.2 从相关数据区设置参与者 1) 从相关数据获得一个具体的参与者 【算法说明】 从相关数据的XPATH中, 直接指定一个参与者。 注: 这种方式获得的参与者只能是个人。相关数据必须满足下面的结构。 <XXXX>tiger</XXXX> 2) 从相关数据获得某一类型的参与者( 指定一个或一组人员) 【算法说明】 从相关数据的XPATH中, 获得某一类型的参与者。能够是一个人, 也能够是某一角色或某一机构的一组人。相关数据必须满足下面的结构。 <XXXX> <id/> <name/> <type/> </XXXX> 3) 从相关数据获得一系列参与者 【算法说明】 从相关数据的XPATH中, 获得一组参与者。能够是一个人、 一个角色、 一个岗位、 一个机构, 也能够是机构、 角色或个人的集合, 还能够是岗位列表的集合。相关数据必须满足下面的结构。 <list> <Participant> <id/> <name/> <type/> </Participant> <Participant> <id/> <name/> <type/> </Participant> </list> id和type的含义如上所示 [特别说明]: 在上面XPATH结构中如果type是”person”, 那么id即为用户ID; 如果type是 ”role”, 那么id即为角色ID; 如果type是”organization”, 那么id即为机构ID; 如果type是 ”position”, 那么id即为岗位ID; 如果type是 ”position_list”, 那么id即需满足如下格式: <Condition type="OR"> // type=”OR”表示组织机构 <roleID>rolea</roleID> // 角色ID <orgID>$orgID</orgID>
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服