唯一网关需要所有外向顺序流上都定义条件。 对这种规则一种例外是默认顺序流。 使用default 属性来引用一个已存在的 顺序流的id。这个顺序流会被使用 当其他外向顺序流的条件都执行为false时。
并行网关用来切分或同步相关的进入或外出 顺序流。
并行网关拥有一个进入顺序流的和多于一个的外出顺序流 叫做'并行切分或 'AND-split'。所有外出顺序流都会 被并行使用。注意:像规范中定义的那样, 外出顺序流中的条件都会被忽略。 ? 并行网关拥有多个进入顺序流和一个外出顺序流 叫做'并行归并'或
AND-join。所有进入顺序流需要 到达这个并行归并,在外向顺序流使用之前。
?
并行网关像下面这样定义:
下面的图形显示了一个并行网关可以如何使用。在流程启动后, 'prepare shipment' 和 'bill customer'用户任务都会被激活。 并行网关被描绘为一个菱形,内部图标是一个十字, 对切分和归并行为都是一样。 图形对应的XML如下所示: 一个任务表示工作需要被外部实体完成, 比如人工或自动服务。 重要的是注意BPMN语法的'task'与jPDL语法的区别。 在jPDL中,'task'的概念总是用在人工做一些事情的环境。 的那个流程引擎遇到jPDL中的task,它会创建一个task, 交给一些人的任务列表,然后它会进入等待状态。然而在BPMN 2.0中, 这里有很多任务类型,一些表示等待状态(比如,User Task 一些表示自动活动(比如,Service Task。 所以小心不要混淆了任务的概念,在切换语言的时候。 任务被描绘成一个圆角矩形,一般内部包含文字。 任务的类型(用户任务,服务任务,脚本任务,等等)显示在矩形的左上角,用小图标区别。 根据任务的类型, 引擎会执行不同的功能。 3.8.10. 任务:人工任务 user task是典型的'人工任务', 实际中的每个workflow或BPMN软件中都可以找到。当流程执行到达这样一个user task时, 一个新人工任务就会被创建,交给用户的任务列表。 和manual task的主要区别是 (也与人工工作对应)是流程引擎了解任务。 引擎可以跟踪竞争,分配,时间,其他,这些不是manual task的情况。 user task描绘为一个圆角矩形,在左上角是一个小用户图标。 user task被定义为下面的BPMN 2.0 XML: BPMN 2.0规范包含了一些方法把任务分配给用户,组,角色等等。 当前的BPMN 2.0 jBPM实现允许使用一个 resourceAssignmentExpression来分配任务, 结合humanPerformer or PotentialOwner结构。 这部分希望在未来的版本里能够进一步演化。 potentialOwner用来在你希望确定用户,组,角色的时候。 这是一个task的候选人。 参考下面的例子。这里的'My task'任务的候选人组是'management'用户组。 也要注意,需要在流程外部定义一个资源, 这样任务分配器可以引用到这个资源。 实际上,任何活动都可以引用一个或多个资源元素。 目前,只需要定义这个资源就可以了(因为它是规范中的一个必须的元素), 但是在以后的发布中会进行加强(比如,资源可以拥有运行时参数)。 identityService.createGroup(\ identityService.createUser(\identityService.createMembership(\ identityService.createUser(\identityService.createMembership(\ Peter和Mary都可以在他们的任务列表中看到这条任务 (代码来自实例单元测试): // Peter and Mary are both part of management, so they both should see the task List