zoukankan      html  css  js  c++  java
  • JBPM4.4_jBPM4.4的流程定义语言(设计流程)

    1. jBPM4.4的流程定义语言(设计流程)

    1.1. process(流程)

    是.jpdl.xml的根元素,可以指定的属性有:

    属性名

    作用说明

    name

    流程定义的名称,用于显示。

    key

    流程定义的key,用于查询。

    如未指定,则默认为name的值。

    version

    版本,如果指定,则不能与已有的流程定义的版本重复;如未指定,则此key的流程定义的第1个为版本1,以后的是版本递增(每次加1)

    1.2. Transition(连线、转移、流转)

    1, 一个活动中可以指定0个或多个Transition。

    a) Start活动中只能有一个Transition。

    b) End活动中没有Transition。

    c) 其他活动中有1条或多条Transition

    2, 如果只有一个,则可以不指定名称(名称是null);如果有多个,则要分别指定唯一的名称。

    1.3. 流转控制活动

    1.3.1. start(开始活动)

    代表流程的开始边界,一个流程有且只能有一个Start活动。开始活动只能指定一个Transition。在流程实例启动后,会自动的使用这个唯一的Transition离开开始活动,到一下个活动。

    不能有Transition指向开始活动。

    1.3.2. end、end-error、end-cancel(结束活动)

    代表流程的结束边界,可以有多个,也可以没有。如果有多个,则到达任一个结束活动,整个流程就都结束了;如果没有,则到达最后那个没有Transition的活动,流程就结束了。

    1.3.3. state(状态活动)

    功能:等待。

    1.3.4. task(任务活动)

    分配任务:

    1, actor=#{String型的变量}

    2, AssignmentHandler,需要在<task>元素中写<assignment-handler class="AssignmentHandlerImpl"/>子元素。

    a) 指定的类要实现AssignmentHandler接口

    b) 在其中可以使用Assignable.setAssignee(String),分配个人任务。

    1.3.5. decision(判断活动)

    1,使用expression,如:expr="#{'to state2'}"

    2,使用Handler,要实现DecisionHandler接口

    3,如果同时配置了expression与Handler,则expression有效,忽略Handler。

    1.3.6. fork、join(分支/聚合活动)

    这是多个分支并行(同时)执行的,并且所有的分支Execution都到Join活动后才离向后执行。

    1.4. 自定义活动(Custom)

    1,在<custom>元素中指定class属性为指定的类。

    2,这个类要实现ExternalActivityBehaviour接口,其中有两个方法:

      1,execute(ActivityExecution),节点的功能代码

      2,signal(ActivityExecution, String, Map),在当前节点等待时,外部发信号时的行为

      3,在execute()方法中,可以调用以下方法对流程进行控制

        1,ActivityExecution.waitForSignal(),在当前节点等待。

        2,ActivityExecution.takeDefaultTransition(),使用默认的Transition离开,当前节点中定义的第一个为默认的。

        3,ActivityExecution.take(String transitionName),使用指定的Transition离开

        4,ActivityExecution.end(),结束流程实例

      4,也可以实现ActivityBehaviour接口,只有一个方法execute(ActivityExecution),这样就不能等待,否则signal时会有类转换异常。

    1.5. 事件

    1, 在根元素中,或在节点元素中,使用<on event="">元素指定事件,其中event属性代表事件的类型。

    2, 在<on>中用子元素<event-listener class="EventListenerImpl" />,指定处理的类,要求指定的类要实现EventListener接口

    3, 事件类型:

    a) <on>元素放在根元素(<process>)中,可以指定event为start或end,表示流程的开始与结束。

    b) <on>元素放在节点元素中,可以指定event为startend,表示节点的进入与离开

    c) 在Start节点中只有end事件,在End节点中只有start事件。

    d) 在<transition>元素中直接写<event-listener class="">,就是配置事件。(因为在这里只有一个事件,所以不用写on与类型)

    e) 在<task>元素中还可以配置assign事件,是在分配任务时触发的。

  • 相关阅读:
    [转]ExtJS之遍历Store
    [转]Ext ComboBox 默认选中某一项
    [转]extjs render 用法介绍
    [转]Extjs combo数据绑定与获取
    [转]ExtJs:xtype的含义
    java 使用POI批量导入excel数据
    面临读研,找工作杂感
    二维“有序”数组查找问题的解决
    操作系统——进程调度之短进程优先
    阶乘相关问题
  • 原文地址:https://www.cnblogs.com/justdoitba/p/8001640.html
Copyright © 2011-2022 走看看