刚学工作流,项目规定用jbpm4.3或刚出4.4,头说将start节点处理成和task节点,便于回退。还有一个是实现给任务分配用户、角色、组、部门,要求能定义时分配和运行时分配(流程运行时,给下一任务指定用户、角色、组、部门)。 第二个需求想过用jbpm的variables、identityService和人员、组、人员组关系表实现.想的是将系统的用户、角色、组、部门查询出来,放入jbpm中数据库表中。流程运行完删除jbpm表中的数据。 有两个问题没有确认,1是用户、角色、组、部门是否可以映射在jbpm数据库中。2是用户、角色、组、部门在流程运行当中有变动怎么办? 是否这种方法可以行得通,有其它解决办法?

解决方案 »

  1.   

    最近我也在研究jbpm4.4,我们可以一起讨论一下,你说的任务分配要求运行时分配与定义时分,我觉得是可以做到的,只不过对一同一个任务而言,二者只能取其一,定义时分配就不用说了,直接定义就可以了,至于运行时分配的话就可以通过流程变量来实现了。
    第二个需求,你只要重新实现IdentitySission接口就可以了,在这个接口里你可以把你自己的需求重写就行了,写完之后还需要在配置文件中把jbpm自己实现的IdentitySission接口给删掉,然后把你自己的给配置上去就行了,这个在开发手册里有。最后给你推荐一个网站,国内jbpm的,希望对你有帮助:http://old.family168.com/
      

  2.   

    补充一下,在开发手册里的第10.3节,内容如下:
    10.3. 自定义身份认证组件现在我们支持两种外部的身份认证组件:jBPM内建的身份认证组件:包含在jBPM工程发布包中
    JBoss IDM:包含在JBoss产品平台下。
    jboss/build.xml安装脚本可以用来 把jBPM安装到JBoss中,使用JBos IDM组件。 这儿有几个配置文件中的参数,覆盖默认的内建身份认证组件 来使用JBoss IDM组件的值。如果你想要使用你自己的身份认证组件,删除下面 jbpm.cfg.xml中的几行代码:<import resource="jbpm.identity.cfg.xml" />
    然后在同一个文件中,添加如下部分<transaction-context>
      <object class="your.package.YourIdentitySessionImpl" />
    </transaction-context>
    YourIdentitySessionImpl 应该实现 org.jbpm.pvm.internal.identity.spi.IdentitySession 为了让这个身份认证可插拔不是我们的第一目标,但是它是设计的意图。让我们看看它会变成什么样。
      

  3.   

    楼上给出的IdentitySession可以实现组织机构适配。动态参与人可以用el表达式:assignee="#{somebody}",或者更复杂的,可以用assignment-handler。如果想实现动态多任务,动态子流程,请参考jBPM-4.4里的foreach。