javaweb-jBPM

jBPM资料总结

基本词汇  

    ProcessEngine   :流程引擎

    RepositoryService :流程资源,

    ExecutionService:执行服务

    TaskService   任务服务

    HistoryService:历史服务

    ManagementService:管理服务

    Start:启动节点

    State:状态节点

    Decision:决策节点

    End:结束节点

    Task:任务节点

    Assignee:用来指派用户

    Custom:自定义节点

    Fork:分支节点

    Events:事件

    Assignment是任务和泳道通用的借口。

    Assignment_handlertask节点的子节点。它的子节点都来自用户代码。

用户代码配置:

   属性:

 

属性

类型

默认值

是否必填

描述

Class

类全名

{class|expr}必填其一

全类名,初始化只会进行一次,用户对象会被作为流程定义的一部分进行

Expr

表达式

{class|expr}必填其一

表达式的值会当做目标对象被获得,表达式会再每次使用时被执行,换句话说,执行的结果值不会按缓存

 

元素

 

 

元素

数目

描述

Field

0~*

描述一个配置值,在用户类使用之前注入到成员变量中

Property

0~*

描述一个配置值,在用户使用之前通过一个setter方法进行注入

 

Filedproperty的属性

 

属性

类型

默认值

是否必填

描述

Name

String

必填

Fieldproperty的名称

 

Filedproperty包含的元素

Fieldproperty元素都拥有一个子元素,表示将被注入的值

 

元素

数目

描述

String

0~1

Java.lang.String

Int

0~1

Java.lang.Integer

Long

0~1

Java.lang.Long

Float

0~1

Java.lang.Float

Double

0~1

Java.lang.Double

True

0~1

Boolean.TRUE

False

0~1

Boolean.FALSE

Object

0~1

会通过反射初始化对象

基本类型的属性

 

属性

类型

默认值

是否必填

描述

Value

Text

必填

Text值会被解析成期望的类型

 

On的属性

 

属性

类型

默认值

是否必填

描述

Event

{start|end|take|自定义值}

必填

事件名称

On的子节点

 

元素

数目

描述

Event-listener

0~*

一个事件监听器实现对象

任何自由活动

0~*

 

 

事件监听器的属性

      Event-listener     属于用户代码,所以可以像用户代码一样进行配置。

任何自由活动(包括event-listener)在事件中,可以指定下面的额外属性

 

属性

类型

默认值

是否必填

描述

Propagation

{enable|disabled|true|false|on|off}

Disabled

可选

指定事件监听器也被传播的事件调用

Continue

{sync|async|exclusive}

Sync

可选

指定execution是否在事件监听器执行之前被异部执行

 

任务属性:

 

属性

类型

默认值

是否必填

描述

Swimlane

泳道(字符串)

可选

引用一个定义在流程中的泳道

 

泳道属性:

 

属性

类型

默认值

是否必填

描述

Name

泳道(字符串)

必填

泳道名称,这个名称将被任务泳道属性中引用

Assignee

表达式

可选

用户id引用的用户负责完成这个任务

Candidate-groups

表达式

可选

一个使用逗号分隔的组id列表。。所有组中的人将作为这个任务的这个泳道的候选人

Candidate-users

表达式

可选

一个使用逗号分隔的用户id列表。所有的用户将作为这个任务的这个泳道中的候选人

 

Sub-process子流程

创建一个子流程实例然后等待直到它完成。当子流程实例完成,子流程中的流向就会继续

子流程属性

 

属性

类型

默认值

是否必填

描述

Sub-process-id

字符串

这个或sub-process-key是必填的

根据id获得子流程。这意味着引用了一个流程定义的指定版本

Sub-process-key

字符串

这个或sub-process-id是必填的

根据key获得子流程。这意味着引用了一个指定key的流程定义的最新版本。流程定义的最新版本会在每次活动执行的时候进行查找

Outcome

表达式

当指定outcome-value时必填

当子流程结束的时候执行表达式。值用来映射向外的流向。添加outcome-value元素到sub-process活动的外出流向中

 

Sub-process元素

 

元素

多重

描述

Parameter-in

0..*

声明一个变量,传递给子流程实例,在创建它时。

Parameter-out

0..*

在子流程结束时设置到上级执行中

 

 

 

Parameter-in属性

 

属性

类型

默认值

是否必填

描述

Subvar

字符串

必填

已经赋值的子流程变量的名称

Var

字符串

Varexpr其中之一必须指定值

上级流程环境中的变量名。

Expr

字符串

Varexpr其中之一必须指定值

这个表达式将会在super流程环境中被设置到子流程变量中。

Lang

字符串

Juel

可选

表达式解析时使用的脚本语言

 

Parameter-out属性

 

属性

类型

默认值

是否必填

描述

Subvar

字符串

必填

上级流程环境中需要设置的变量名

Var

字符串

Subvarexpr其中之一必须指定值

子流程中需要获取的变量名

Expr

字符串

Subvarexpr其中之一必须指定值

这个表达式将会在sub流程环境下被解析。结果值会被设置到上级流程变量中。

Lang

字符串

Juel

可选

表达式解析时使用的脚本语言

 

Join属性

 

属性

类型

默认值

是否必须

描述

Multiplicity

Integer

传入转移的数目

可选

在这个join活动之前

Locakmode

(none,read,

Upgrade_nowait,write)

Upgrade

Optional

Hibernate的锁定模式,应用在上级执行,来防止两个还没到达join的同步事物看到对方,这会导致死锁

 

 

End execution结束流向

 

属性

类型

默认值

是否必须

描述

Ends

{processinstance|execution}

Processinstance

Optional可选

流向路径到达end活动整个流程实例处理就会结束

 

End multiple多个结束

 

 

流程发布执行过程

      步骤一:加载jpdl配置文件,创建流程引擎实例,

具体实现代码:

ProcessEngine processEngine=new Configuration().buildProcessEngine();

Or

ProcessEngine processEngine=new Conifguation().setResource(“my-own-configuation-file.xml”).buildProcessEngine(); 

      步骤二:发布流程实例使用RepostitoryService创建depolyment对象并进行流程实例发布

processService.createDeployment().addResource(“order.jpdl.xml”).deploy();

此种方式XML流程定义文件的来源可以是一个文件,url网址,字符串,inputStream,zipjar压缩包和一个目录。

如果没有提供key,会在名字的基础自动生成,生成的key会替换所有不是字母和数字的字符。同一个名字关联一个key.

如果没有为流程文件提供版本号,jBPM会自动为它分配一个版本号。请特别注意哪些已经部署了的名字相同的流程文件的版本号。它会比已经部署的同一个key的流程定义里的最大的版本号还大,没有部署相同key的流程定义的版本号会分配为1

<process name=”Insurance claim”>   …….   </process>

假设这个流程是第一次部署,下面就是他的属性;

 

 

 

Property

Value

Source

Name

Insurance   claim

Process       xml

Key

Insurance_claim

Generated

Version

1

Generated

Id

Insurance_claim:1

generated

 

<process name=”Insurance claim”   key=”ICL”>   ……..   </process>

key值属性的流程

 

Property

Value

Source

Name

Insurance  claim

Process  xml

Key

ICL

Process  xml

Version

1

Generated

Id

ICL:1

Generated

 

      步骤三:启动流程实例ExecutionService

具体实现代码

executionService.startProcessInstanceById(“ICL”);

说明:上述代码会查找keyICL的最新版本的流程定义,然后在流程定义里启动流程实例。

insurance claim流程部署了一个新版本,startProcessInstanceBykey方法会自动选择新部署的版本。

明确流程版本:

executionService.startProcessInstanceById(“ICL:1”);

换句话说,你如果想明确的版本启动流程实例,是可以使用流程定义的id启动流程实例。如上所述。

 

欢迎大家加入Q群进行交流138153063 

你可能感兴趣的:(jbpm)