`
wjn811
  • 浏览: 7139 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

jbpm4 cr1 form

    博客分类:
  • jBPM
阅读更多

7月1号 release。 但貌似到现在还没出来。 mail到是有N多封了。

 

我以jbpm为工作流引擎实现为基础来开发一个应用系统。现在做原型,所以我有这个勇气用CR1版本。做原型目前就我一个人。

 

我比较想等RELEASE出来了继续开发。但是现在难道要我停滞? 唉,还是继续写代码吧。

 

遇到个问题。每个定义好的task如何关联到与之相对应的form去?

 

我用的struts2。具体说来,就是怎样让用户点击自己任务列表的一项后跳转到相应的Action去?

 

这个Action可能负责取出已经存在的表单数据,为接下来的用户表单页面准备数据。

 

开始想到了很奇怪的方法。就是task保存着Execution的实例id,然后通过这个id找到ProcessDefinition。通过ProcessDefinitionKey和task的name就可以限定到具体的某个form了。 我真是聪明啊! 但发现实现起来很困难。

 

看了看task的hbm,都是延迟加载的。不知道jbpm有OpenSessionInView的模式支持吗?

 

不知道。我把问题想复杂了?是的。看了Task接口,发现有getForm这个方法。太帅了。可以getForm。然后看了TaskImpl(对应于jbpm4_task表),果然有Form字段。

 

我猜这个应该就是jbpm4让你去绑定页面地址的吧。于是乎,添加form属性到某个task:

 

 

<task assignee="#{ren}" g="120,24,92,52" name="aTask" form="/XXX/x_ni.action">
      <transition g="-50,-29" name="to YYY" to="yyy"/>
</task>
 

发现jpdl-4.0.xsd里没定义这个form。所以咱的jpdl,就有小红点点了。(看这里,看这里:))。

 

不过不影响最终的效果。发布还是可以的。不信你自己试试。

 

有了form,咱就可以这样写页面了:

 

 

<a href="<%=request.getContextPath()%>${task.form}">查看任务</a>
 

这样做了以后,用户点击一个具体的task后,就可以导到专为这个task定制的表单(form)去了

 

 

 

那么,我是怎么知道没问题的呢?因为我发现在JpdlParser中,会有parseTaskDefinition这个方法。

这个方法的实现会创建一个TaskDefinitionImpl,然后:

 

 

String form = XmlUtil.attribute(element, "form");
taskDefinition.setForm(form);
 

那么,你肯定会想,这个TaskDefinitionImpl和TaskImpl肯定有某种暧昧的关系了。是的,你答对了。

在JpdlExecution中有:

 

 

public TaskImpl createTask(TaskDefinitionImpl taskDefinition) {
    DbSession dbSession = Environment.getFromCurrent(DbSession.class);
    TaskImpl task = (TaskImpl) dbSession.createTask();
    task.setTaskDefinition(taskDefinition);
    task.setExecution(this);
    task.setProcessInstance(processInstance);
    task.setSignalling(true);
    
    // initialize the name
    if (taskDefinition.getName()!=null) {
      task.setName(taskDefinition.getName());
    } else {
      task.setName(getActivityName());
    }

    task.setDescription(taskDefinition.getDescription());
    task.setPriority(taskDefinition.getPriority());
    task.setForm(taskDefinition.getForm());
    
    // save task so that TaskDbSession.findTaskByExecution works for assign event listeners
    dbSession.saveTask(task);
    
    ............
    }

 

这就是暧昧的关系。

 

 

还有,我是怎么知道这些类之间的关系呢?

 

我先看到jbpm.task.hbm.xml的。里面会涉及到TaskImpl。TaskImpl会实现Task接口。然后我就在想这些类是什么时候创建的。于是在eclipse右键(点在TaskImpl这个类上),然后Open Call Hierarchy。 然后会在eclipse下方出现一个Call Hierarchy窗口,自己慢慢看,慢慢点吧。(new Task() -> createTask()->createTask(TaskDefinitionImpl))

 

不知道大家有没有更好的方法来看这些代码?如果我的方法,你能用到。那我真是万分荣幸!

 

 

分享到:
评论
2 楼 jackyrong 2011-09-07  
好象4.4的task里面,没有了form属性呀
1 楼 lovexiu111 2009-07-09  
我也是这样想的,用form来实现任务和业务处理逻辑的绑定。

不知道老大有没有考虑会签的使用方法?

希望能共同探讨!

QQ:279316280

相关推荐

    jbpm4jbpm5

    jbpm4jbpm5是关于jbpm流程管理框架的专题,涵盖了jbpm4和jbpm5两个主要版本。jbpm是一个开源的工作流管理系统,用于帮助开发者实现业务流程自动化。以下是基于给定文件的信息,深入解析jbpm4和jbpm5的知识点: 1. *...

    jBPM4工作流应用开发指南.pdf

    jBPM4作为该系列的一个版本,提供了一套完整的流程管理和执行框架,允许开发者构建灵活的工作流应用,以实现业务流程自动化。本指南由胡奇编写,旨在为开发者提供一个全面的参考,帮助他们快速学习和掌握使用jBPM4...

    jbpm4案例源码

    这个"jbpm4案例源码"包含了jbpm4系统的核心组件和示例代码,帮助开发者深入理解jbpm4的工作原理和实践应用。《jBPM4工作流应用开发指南.pdf》这本书则进一步阐述了如何利用jbpm4来构建工作流应用。 jbpm4的核心功能...

    JBPM4 表 详细介绍

    ### JBPM4 表结构详解 JBPM (JBoss Business Process Management) 是一款开源的工作流管理系统,被广泛应用于业务流程管理领域。JBPM4作为其一个版本,具有丰富的功能及特性,尤其在流程管理和任务分配方面表现突出...

    jBPM4完整例子

    **jBPM4完整例子详解** jBPM4是一个企业级的工作流管理系统,它提供了强大的业务流程管理和工作流实现能力。这个"jBPM4完整例子"是一个基于SSH(Struts2、Spring、Hibernate)框架集成jBPM4.4的请假流程应用,非常...

    JBPM4 开发文档 实例 流程

    **JBPM4 开发文档详解** JBPM4(Java Business Process Management 4)是一个轻量级的开源工作流管理系统,基于J2EE架构,旨在帮助开发者实现复杂的业务流程自动化。该项目于2004年10月18日发布2.0版本,并随后成为...

    jBPM4工作流示例jbpmDemo

    **jbPM4工作流示例jbpmDemo**是一款基于jBPM4的工作流管理系统实例,旨在帮助用户深入了解和掌握jBPM4工作流引擎的使用方法。jBPM4是一款强大的开源工作流管理系统,它提供了流程建模、执行以及监控等功能,广泛应用...

    jbpm4web-JBPM4的一个web版本的Demo

    【jbpm4web - JBPM4的Web版Demo详解】 JBPM4是一个开源的工作流管理系统,它提供了强大的业务流程管理(BPM)功能,包括流程设计、执行、监控和优化。"jbpm4web"是基于JBPM4开发的一个Web版本的示例项目,旨在帮助...

    JBPM4与Spring整合例子代码

    **JBPM4与Spring整合详解** JBPM4(Java Business Process Management 4)是一个开源的工作流管理系统,它提供了业务流程的建模、部署、执行和监控功能。Spring框架则是Java应用开发中的一个核心组件,主要负责依赖...

    JBPM4 java源代码分包详解JBPM4

    【JBPM4 Java源代码分包详解】 JBPM4是一个流行的开源工作流管理系统,它提供了一整套用于设计、执行和管理业务流程的工具。在深入研究JBPM4的源代码时,我们可以从其包结构中了解到框架的核心功能和设计理念。 1....

    JBPM4 常用表结构及其说明

    ### JBPM4 常用表结构及其说明 JBPM4是JBPM(Java Business Process Model)的一个版本,主要用于提供业务流程管理的功能。它通过一组数据库表来支持工作流的执行与跟踪。本文将详细介绍JBPM4中的常用表结构及其...

    jbpm4流程提交及执行完整代码

    jbpm4是一款强大的工作流管理系统,它提供了流程定义、流程实例管理、任务处理以及流程监控等一系列功能。在“jbpm4流程提交及执行完整代码”这个压缩包中,包含了实现jbpm4流程提交和执行所需的若干关键文件。下面...

    jBPM4入门基础环境配置

    **jBPM4入门基础环境配置** jBPM(Java Business Process Management)是一个开源的工作流管理系统,主要用于处理业务流程的建模、部署、执行和监控。jBPM4是其第四个主要版本,它提供了丰富的功能,包括流程定义、...

    jBPM 4使用手记

    **jBPM 4 使用手记** jBPM(Java Business Process Management)是一个开源的工作流管理系统,它提供了全面的业务流程管理和工作流解决方案。在jBPM 4这个版本中,开发者可以利用其强大的功能来设计、执行和管理...

    jbpm4基本jar包

    【jbpm4基本jar包】是企业级工作流管理系统Jboss Business Process Management Suite(简称jbpm)的一个核心组件集合。jbpm4是一个开源的工作流程管理框架,它提供了强大的业务流程建模、执行和监控能力,使得开发...

    jbpm4 完整的请假流程

    jbpm4是一个基于Java的企业级工作流管理系统,用于设计、执行和管理业务流程。这个“jbpm4 完整的请假流程”是一个示例项目,旨在帮助初学者理解和实践jbpm4在处理业务流程,尤其是请假申请流程中的应用。在这个项目...

    JBPM4 每张表对应的含义

    ### JBPM4 每张表对应的含义 JBPM(JBoss Business Process Management)是一款开源的工作流管理系统,广泛应用于各种业务流程管理场景中。JBPM4版本是该系列中的一个重要版本,其数据库设计反映了该系统的核心功能...

    jbpm4的员工请假例子原码

    【jbpm4的员工请假例子原码】是一个基于jbpm4流程引擎的示例项目,展示了如何在企业中实现一个简单的员工请假流程。这个Web项目是完全开源的,可以通过Eclipse这样的集成开发环境来打开和运行,对于学习和理解jbpm4...

    JBPM4表结构.doc

    JBPM4,全称为JBoss Business Process Management Suite,是一个基于Java的开源工作流管理系统,它提供了全面的业务流程管理功能,包括工作流引擎和基于Eclipse的图形化流程设计工具。该系统允许开发者和业务分析师...

Global site tag (gtag.js) - Google Analytics