`
fndcz
  • 浏览: 50202 次
  • 性别: Icon_minigender_1
  • 来自: 自己输入
社区版块
存档分类
最新评论

jBPM学习(八)----liferay4.2.2下的jBPM开发

    博客分类:
  • jBPM
阅读更多
八、 liferay4.2.2 下的 jBPM 开发
liferay4.2.2 中对 jBPM3.1.2 进行了集成,并且多 jpdl 语言做了扩展,主要表现在对表单数据类型的支持。表现形式为在原有变量表示的基础上为每个变量名加上前缀。下面我们通过一个稍微复杂的例子来具体讲解。 (这里 liferay eclipse 下的工程名为 portal ,扩展工程名为 ext
1.         数据库的迁移
数据库的生成这里不再赘述,请参考前面章节建立数据库。数据库建立之后,修改 portal\jbpm-web\docroot\WEB-INF\classes\hibernate.cfg.xml 文件,此文件为 liferay 下的 jbpm 数据库配置文件,注释掉 <!-- Hypersonic --> 下的属性,根据数据库配置 <!-- SQL Server --> 下属性,我的配置如下:
xml 代码
  1. < property   name = "hibernate.dialect" > org.hibernate.dialect.SQLServerDialect </ property >   
  2. < property   name = "hibernate.connection.driver_class" > net.sourceforge.jtds.jdbc.Driver </ property >   
  3. < property   name = "hibernate.connection.url" > jdbc:jtds:sqlserver://127.0.0.1:1433; DatabaseName = lportal </ property >   
  4. < property   name = "hibernate.connection.username" > liferay </ property >   
  5. < property   name = "hibernate.connection.password" > </ property >   
完成后保存文件。
2.         流程定义
portal\jbpm-web\docroot\WEB-INF\definitions 下右键新建一个流程,命名为 MessageSend 。按照下图所示建立基本流程,具体过程参照前面。
3.         定义泳道
定义一个名为 user 的泳道:
4.         定义任务
对照下图为各个节点创建任务,并将所有任务赋予泳道 user
5.         定义任务变量
下面分别介绍各个任务中的变量:
任务 comment
任务 input-name
任务 input-message-one
任务 input-message-two
任务 show-message
这里说明一下: liferay workflow portlet jbpm 的变量定义经行了扩展,可以看到每个变量的名字都由多部分组成其中用冒号分隔, workflow portlet 会根据变量的前缀自动为该变量生成 html 中的表单。
值得注意的是 jbpm 并不会区分前缀与变量名,而是将这个字符串作为该变量的名字。如:上图中 text:message name ,变量名就为“ text:message name ”。在程序中对该变量的引用也应使用“ text:message name ”。
具体每种数据类型的表示方法如下表:
6.         定义 Handler Action
在流程中我们有一个 decision 节点,这里需要自定义一个类来对 decision 逻辑进行处理。首先,我们切换到 source 视图,找到 decision 标签,在标签中添加一个 handler 标签,该标签用来指定处理逻辑的类,具体内容如下:
xml 代码
  1. < decision   name = "more message" >   
  2. < handler   class = "com.liferay.jbpm.handler.MessageSendDecision" > </ handler >   
  3.     < transition   name = "no"   to = "end" > </ transition >   
  4.     < transition   name = "yes"   to = "message-name-input" > </ transition >   
  5. </ decision >   
从上面可以看出定义的类为:MessageSendDecision 此类的主要任务是通过判断用户的选项来决定将令牌具体传递给哪一个 transition ,下面我们实现这个类。
       我们在 portal 工程中新建一个 java 文件
portal\jbpm-web\docroot\WEB-INF\src\com\liferay\jbpm\handler\MessageSendDecision.java ,内容如下:
java 代码
  1. package  com.liferay.jbpm.handler;   
  2.     
  3. import  org.jbpm.context.exe.ContextInstance;   
  4. import  org.jbpm.graph.exe.ExecutionContext;   
  5. import  org.jbpm.graph.node.DecisionHandler;   
  6.     
  7. public   class  MessageSendDecision  implements  DecisionHandler {   
  8.     
  9.         public  String decide(ExecutionContext executionContext)  throws  Exception {   
  10.                //获取当前令牌所处的上下文   
  11. ContextInstance instance = executionContext.getContextInstance();   
  12.     
  13.               String decision =  null ;   
  14.                //获取该上下文中的变量radio:more info:yes,no   
  15.               String response = (String) instance.getVariable( "radio:more info:yes,no" );   
  16.                //对该变量进行判断   
  17.                if  (response.equalsIgnoreCase( "yes" ) || response.equalsIgnoreCase( "no" ))   
  18.                      decision = response;   
  19.                else   
  20.                      decision =  "no" ;   
  21.               System.out.println(decision);   
  22.                //返回decision   
  23. //返回的decision必须与定义的transition名相对应,否则执行默认transition   
  24.                return  decision;   
  25.        }   
  26. }   
 
保存该文件,至此该流程的定义结束,我们可以看到 jbpm-web 目录下多了 4 个文件:
7.         部署流程
Jboss 提供的 IDE 没有支持在 liferay 下自动部署流程,因此通过 jbpm-web 下的 ant 命令进行部署。
jbpm-web 下的 build.xml 文件拖入 ant 窗口,依次执行命令 compile 编译我们定义的 java 类。之后执行 deploy 命令,将类和流程的定义部署到 web 应用中。打开 tomcat 下的 webapp/jbpm-web ,就可以找到新添加的相应文件。
启动 tomcat ,登录 liferay ,添加 workflow portlet ,点击 definition 选项,点击 add
将刚才定义的流程的 processdenfinition.xml 中的内容全部拷贝到文本框中,点击 save new version ,如下:
提交成功后,可以看到列表中多了一项:
点击 add instance ,为该流程添加一个新实例,对该流程进行验证。
分享到:
评论
2 楼 wjzliu0064 2008-09-23  
  
1 楼 wjl1174 2008-04-21  
这个工程有下载地址吗

相关推荐

    jbpm下载 jbpm-jpdl-suite-3.2GA -(5)分开压缩(共5个文件)

    jbpm-jpdl-suite-3.2GA -(5)分开压缩(共5个文件)jbpm下载 jbpm-jpdl-suite-3.2GA -(5)分开压缩(共5个文件)jbpm下载

    jbpm-jpdl-suite-3.2.3安装配置.doc

    - 修改jbpm-jpdl-3.2.3\db目录下的jbpm.jpdl.mysql.sql文件,为每个SQL语句末尾添加分号,以便正确执行脚本。 4. **jbpm-jpdl-suite-3.2.3部署**: - 在MySQL中执行修改后的jbpm.jpdl.mysql.sql脚本,初始化jbpm...

    jbpm-jpdl-suite-3.2.3的安装配置

    2. **jbpm-jpdl-designer-3.1.2.zip**:这是一个基于Eclipse的图形化流程设计工具,支持流程的可视化定制,避免直接编辑XML文件。同时,它还具有流程定义上传功能,方便将新定义的流程发布到jPDL系统。 3. **jbpm-...

    jbpm-jpdl-designer-site-3.1.7.zip

    jbpm-jpdl-designer-site-3.1.7.zip jbpm-jpdl-designer-site-3.1.7.zip jbpm-jpdl-designer-site-3.1.7.zip

    jbpm-starters-kit-3.1.2.part2.rar

    jbpm-starters-kit-3.1.2插件,jbpm-starters-kit-3.1.2插件,jbpm-starters-kit-3.1.2插件,jbpm-starters-kit-3.1.2插件,jbpm-starters-kit-3.1.2插件,jbpm-starters-kit-3.1.2插件,共两卷

    jbpm-jpdl-suite-3.2.3.zip

    jbpm-jpdl-suite-3.2.3.zipjbpm-jpdl-suite-3.2.3.zipjbpm-jpdl-suite-3.2.3.zipjbpm-jpdl-suite-3.2.3.zipjbpm-jpdl-suite-3.2.3.zipjbpm-jpdl-suite-3.2.3.zipjbpm-jpdl-suite-3.2.3.zipjbpm-jpdl-suite-3.2.3....

    jbpm-jpdl-suite-3.2.GA.zip-6

    jbpm-jpdl-suite-3.2.GA.zip

    jbpm-jpdl-3.2.3.zip

    jbpm-jpdl-3.2.3.zip 是一个包含开源工作流引擎jbpm的版本3.2.3的压缩包。jbpm(Java Business Process Management)是一个强大的业务流程管理系统,它提供了完整的业务流程建模、执行和管理能力,特别适合于需要...

    jbpm-gpd-site 4.4.zip

    该插件是jbpm 4.4发行版的一部分,通常位于jbpm安装目录下的jbpm-4.4/install/src/gpd路径中。用户可能会因为各种原因找不到官方提供的安装源,因此这个压缩包被上传,以便有需要的开发者能够方便地获取并安装。 ...

    jbpm-flow-builder-5.1.0.Final.jar

    jbpm-flow-builder-5.1.0.Final.jar jbpm5

    jbpm-jpdl-designer-3.1.3.zip

    2. **Eclipse插件**:jbpm-jpdl-designer通常作为一个Eclipse插件存在,使得开发者能够在熟悉的Eclipse集成开发环境中进行流程设计。 **压缩包内的文件说明:** 1. **release.notes.html**:这是发布说明文件,通常...

    jbpm-jpdl-designer-nodeps-3.1.4

    "jbpm-jpdl-designer-nodeps-3.1.4" 是一个针对Jbpm工作流管理系统中的JPDL设计工具的无依赖版本,主要用于创建和编辑JPDL(Jbpm Process Definition Language)文件。该资源包含了该工具的详细文档、许可证协议以及...

    jbpm-jpdl-suite-3.2.GA.zip-3

    jbpm-jpdl-suite-3.2.GA.zip

    jbpm-jpdl-3.2.3(server部分).rar

    这个是jbpm-jpdl-3.2.3.zip的server部分,有60多兆, 只要将"jbpm-jpdl-3.2.3(没有server部分).rar"和这个合在一起就是整个的jbpm-jpdl-3.2.3.zip "jbpm-jpdl-3.2.3(没有server部分).rar"在我的另外一个上传资源里面

    jbpm-2.0-beta1.zip_java 工作流引擎_jbpm_jbpm-demo_工作流_工作流引擎

    jbpm-demo是jbpm附带的演示项目,它包含了多个示例流程,如请假审批流程、采购流程等,这些实例为初学者提供了实践和学习的机会。通过jbpm-demo,用户可以直观地了解如何部署和运行工作流,以及如何与工作流系统进行...

    jbpm-jpdl-suite-3.2.GA.zip-5

    jbpm-jpdl-suite-3.2.GA.zip

    jbpm-starters-kit-3.1.2.zip官方下载地址

    jbpm-starters-kit-3.1.2.zip官方下载地址 版本里包括一个JBPM流程设计器的Eclipse插件,和一个用JBOSS作为服务器的示例流程等相关文件。解压jbpm-starters-kit-3.1.2.rar到某个特定目录,这里我们首先用到的是包里...

    jbpm-jpdl-designer-3.0.13.zip_jbpm_jbpm design_jbpm designer_jbp

    jbpm-jpdl-designer-3.0.13 是一个与jbpm相关的软件包,主要功能是提供jbpm流程定义的图形化设计工具。...通过深入学习和使用jbpm-jpdl-designer,开发人员和业务分析师可以更好地理解和管理复杂的企业级流程。

Global site tag (gtag.js) - Google Analytics