jPDL的扩展思考

基于自己目前对jBPM的了解,发现使用jBPM做为工作流引擎时流程可以通过jPDL很方便的定义和发布。主要的工作来自于界面的定制,因为觉得 想要做一个通用的jBPM界面简直是不可能(或者是我目前的思路有问题),每个流程的流程meta是没问题,比方说把transition定义为一个 button然后去调用webcontroller,但是业务meta就不行了,某个字段可能需要显示为一个dropdown而不是文本框。尽管jPDL designer可以生成form但也只能生成比较简单的文本框和按钮,而且是基于jsf。

偶然中发现了liferay中对jPDL的扩展恰好是我想要的,增加了表单数据类型的定义

每个node的变量定义为:
text:username
textarea:introduction
checkbox:married:yes,no

“liferayworkflow portletjbpm的变量定义经行了扩展,可以看到每个变量的名字都由多部分组成其中用冒号分隔,workflow portlet会根据变量的前缀自动为该变量生成html中的表单。”

现在扩展是扩展了,但是如果想要加入业务规则呢?试试另一种思路:业务数据是在流在工作流上的,那么在不同的流程阶段(phase)要满足不同的业 务规则。这里就有一个问题了,规则是应该作为流程的一部分还是作为数据的一部分,显然应该是流程的一部分。但流程怎么能够知道这些meta(某个数据在某 个节点上要怎么显示并满足哪些规则)呢 ?(其实这些东西早就有现成的产品了。比如PEGA)这个时候就又需要扩展jPDL了。

考虑怎么去扩展jPDL:每个流程应该有一个flowBean的model,他可能包含很多其他的业务数据对象,这样每个流程所要操作的数据就都在 这个flowBean里,而规则和显示则要定义到流程的每个节点。有点类似JPF(java page flow,weblogic portal用的webmvc)。

先想到这里,以后再补充。

Comments are closed.