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

开始jbpm之旅(一)

    博客分类:
  • jbpm
 
阅读更多
最近在学这个,虽然版本不是最新的,但是先学着先,以后有需要在换版本吧。

版本:jbpm4.4

下载地址:http://sourceforge.net/projects/jbpm/files/jBPM%204/jbpm-4.4/jbpm-4.4.zip/download

下载下来之后,什么都不用管直接解压就行,然后什么安装啊,部署之类的先不用理,最重要的是你用什么数据库,根据不同的数据库来选择修改不同的配置文件,这里指的配置文件是用来建表,然后把流程记录下来,例子如下:

在你的解压目录:
(本人的)H:\jbpm-4.4\install\jdbc
选择你要用的数据库:
以oracle.properties为例修改
内容如下:
jdbc.driver=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@localhost:1521:orcl
jdbc.username=scott
jdbc.password=scott


需要的软件:
先下载ant,解压即可,(还有那些jdk,eclipse,oracle或者mysql的,自己装好先,环境变量就不用说了吧)
下面看设置:(环境变量)
CLASSPATH:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
JAVA_HOME:H:\Java\jdk1.7.0_07
Path:%JAVA_HOME%\bin;\;%ANT_HOME%\bin
ANT_HOME:H:\apache-ant-1.6.5

然后建表:
cmd 到 H:\jbpm-4.4\install(本文件下有build.xml)
build.xml中有如下任务:
<!-- {hsqldb | mysql | oracle | postgresql} -->
 <property name="database" value="oracle" />


  <target name="create.jbpm.schema" description="Create the jBPM tables in the database">
    <generatecfg transaction="standalone.testsuite" />
    <java classname="org.jbpm.db.Create" fork="true">
      <arg value="${database}" />
      <classpath>
        <pathelement location="${jbpm.home}/install/generated/cfg" />
        <pathelement location="${jbpm.home}/install/src/db" />
        <fileset dir="${jbpm.home}">
          <include name="jbpm.jar" />
        </fileset>
        <fileset dir="${jbpm.home}/lib">
          <include name="*.jar" />
        </fileset>
      </classpath>
    </java>
  </target>


database要注意修改成你用的数据库,我的是oracel!!先把库建出来,本人数据库名为orcl
在cmd到这个目录的前提下:ant create.jbpm.schema
其实执行的sql建表语句呢,在H:\jbpm-4.4\install\src\db\create

最后一步,下载GPD安装到eclipse!GPD是一个jbpm设计器,为设计流程所使用的。
GPD也可以在jbpm安装路径下找到  H:\jbpm-4.4\install\src\gpd
---------------------------------------------------------------------
好了,那些ant的其他任务先不用理了,不然可能觉得麻烦,准备工作结束,明天就开始具体流程的类的实践。


------------------------------------下面是参考资料------------------------------------------
http://blog.csdn.net/weilesi/article/details/6589121

对jBPM4.4数据库的几张表简单介绍:

A。资源库和运行时表结构

JBPM4_DEPLOYMENT   流程定义表                                        
JBPM4_DEPLOYPROP 流程定义属性表                                   
JBPM4_EXECUTION  流程实例表  (主要是存放JBPM4的执行信息,Execution机制代 替了JBPM3的Token机制)

JBPM4_JOB  定时表(存放的是Timer 的定义)                                                                
JBPM4_LOB  存储表 (流程定义相关的布署信息)                                                                 
JBPM4_PARTICIPATION 参与者表 (存放 Participation的信息,Participation的种类有Candidate、Client、Owner、 Replaced Assignee和Viewer。而具体的Participation既可以是单一用户,也可以是用户组。)

JBPM4_PROPERTY  引擎参数表
JBPM4_SWIMLANE  泳道表(Swim Lane是一种Runtime Process Role,多个Task可以一次分配到同一Actor身上。)

JBPM4_TASK 任务表  (存放需要人来完成的Activities,需要人来参与完成的Activity 被称为 Task).    

JBPM4_VARIABLE 上下文表  (存的是进行时的临时变量)

B。历史数据库表结构

JBPM4_HIST_ACTINST 流程活动(节点)实例表   (Activity Instance的历史记录)

JBPM4_HIST_DETAIL 流程历史详细表  (保存Variable的变更记录)

JBPM4_HIST_PROCINST 流程实例历史表   (Process Instance的历史记录)

JBPM4_HIST_TASK  任务历史表(Task的历史信息)

JBPM4_HIST_VAR
  流程变量(上下文)历史表  (保存历史的变量 )

C。身份认证表结构 

JBPM4_ID_GROUP
组表

JBPM4_ID_MEMBERSHIP 用户角色表

JBPM4_ID_USER 用户表

jbpm4.4最核心的包

1.antlr.jar

2.commons-collections.jar

3.commons-logging.jar

4.dom4j.jar

5.hibernate-core.jar

6.javassist.jar

7.jbpm.jar

8.jta.jar

9.mail.jar

10.slf4j-api.jar

11.slf4j-jdk14.jar

12.slf4j-log4j12.jar

配置文件

jbpm.execution.hbm.xml, jbpm.history.hbm.xml, jbpm.identity.hbm.xml, jbpm.repository.hbm.xml, jbpm.task.hbm.xml五个hibernate映射文件

jbpm.default.cfg.xml     ---->   流程引擎的默认配置文件

jbpm.identity.cfg.xml    ---->   身份验证配置文件

jbpm.jbossremote.cfg.xml ---->   远程调用jboss实现命令模式

jbpm.jobexecutor.cfg.xml ---->   任务执行器的配置

jbpm.task.lifecycle.xml  ---->   任务生命周期,包括启动,暂停,继续,完成,取消之类

jbpm.tx.hibernate.cfg.xml---->   默认的hibernate事务配置

jbpm.tx.jta.cfg.xml      ---->   jta的事务配置

jbpm.variable.types.xml  ---->   配置变量类型映射

jbpm.wire.bindings.xml   ---->   依赖绑定映射

jbpm4.4包作用

org.jbpm.pvm.internal.ant

提供使用ant发布流程,辅助启动jboss的任务。

org.jbpm.pvm.internal.builder

用来构造各种模型,包括活动,活动行为,事件,事件处理器,流程定义,变量,任务,等等。

org.jbpm.pvm.internal.cal

提供日历,包括日期,时间段,持续时间,节假日。

org.jbpm.pvm.internal.cfg

JbpmConfiguration和SpringConfiguration实现了org.jbpm.api.Configuration,用来从配置文件构造ProcessEngine

org.jbpm.pvm.internal.xml

主要用于解析xml的,主要解析jbpm.cfg.xml和流程定义文件

org.jbpm.pvm.internal.util

包含常用工具

org.jbpm.pvm.internal.wire

用来在ioc里进行依赖绑定。子包包含binding, descriptor, operation和xml,而且默认的绑定方式是使用field,而不是常见的setter绑定方式。

org.jbpm.pvm.internal.type

用来进行类型转换,主要是加载jbpm.cfg.xml对流程引擎进行初始化时,还有就是发布流程的时候进行类型转换。子包包括converter,matcher和variable,类型转换器,类型匹配器和变量。

org.jbpm.pvm.internal.tx

其中负责处理事务,JtaTransaction啦,SpringTransationInterceptor 啦,StandardTransaction啦,这些需要根据实际环境具体选择。jta的实现部分已经单独放到子包jta中了。希望spring中的事务也能这样处理就好了。

org.jbpm.pvm.internal.test

包下放了一个JobTestHelper,显然是可以帮助在测试环境下运行job的,。

org.jbpm.api.client

这部分包含ClientExecution, ClientProcessDefinition, ClientProcessInstance。ClientExecution继承了OpenExecution,声明了end(), signal(), suspend(), resume()之类的方法。ClientProcessDefintion继承了OpenProcessDefintion,其中的功能主要是 createProcessInstance和startProcessInstance。

org.jbpm.pvm.internal.cmd

包含Command和CommandService,这是命令设计模式的基础。其中放着所有的命令,所有的流程操作都可以在这里找到。

org.jbpm.pvm.internal.email

下面有两个子包impl和spi,只要注意spi下的AddressResolver, MailProducer和MailSession就可以实现自定义的实现了。

org.jbpm.pvm.internal.env

包含Context, Environment, EnvironmentFactory, Transaction, WireObject。其中Context, Environment和EnvironmentFactory组成了jBPM4里的IoC系统。Transaction定义了通用事务。 WireObject用来做依赖绑定。下面保存着环境有关的实现类。包括Authentication权限认证,Environment与context 相关的各个类。

org.jbpm.pvm.internal.hibernate

下面的类是专门与hibernate进行交互的类,包含类型转换,命名策略和最主要的DbSessionImpl,所有与数据库的操作都来源于此。

org.jbpm.pvm.internal.history

下面是历史操作所需要的部分,其下还包含events和model包。

org.jbpm.pvm.internal.identity

包主要负责身份认证的操作。包含三个子包cmd, impl和spi,cmd下定义所用到的命令,impl下是实现类,spi下放着IdentitySession。

org.jbpm.pvm.internal.jms

包括JmsMessageSession和JmsMessageUtil,应该是用来处理jms的,JmsMessageSession与 org.jbpm.api.job.Message相关联。说明job下的Message是依靠jms发送异步消息的。

org.jbpm.pvm.internal.job

提供了对job, message和timer的实现

org.jbpm.pvm.internal.jobexecutor

提供了任务执行器,包括JobExecutorServlet和对应的线程池,以及一系列的命令和处理器。无论是job, message或是timer,最终都会被这里执行。

org.jbpm.pvm.internal.lob

主要用来处理流程发布时的文件内容,需要把jpdl.xml文件和图片,甚至是以后可能把class文件都以附件形式保存到数据库中,以备后用

org.jbpm.pvm.internal.model

这个模型包中包含了很多很多类,包括Activity, CompositeElement, Condition, ObservableElement, OpenProcessDefinitionTransition。简单分类一下。最底层的是ObservableElement,它是可以被事件监听的元素,并且可以继承,CompositeElement继承了 ObservableElement,它里面可以装填多个活动。再加上Event中定义了多个事件,这些就构成了最基本的事件模型。Activity和 ActivityCoordinates分别定义了活动类和活动位置。以这些为基础,OpenProcessDefinition继承了 ProcessDefinition和CompositeElement。最终,我们还有一个Condition类,它只有一个evaluate方法,接受OpenExecution作为参数返回boolean值,Condition和Activity组合成了Transition,这个转移包含了起点,终点,以及条件判断。最庞大的模型部分,活动,转移,流程定义,流程实例的实现类都放在这里。在它的op子包中包含的是流程进行中的各项操作。

org.jbpm.pvm.internal.query

History, Job, ProcessDefintion, ProcessInstance这四个query类的实现,还提供了一个Page类,但是其中只有firstResult和maxResults,所以没啥大用

org.jbpm.pvm.internal.repository

负责的是流程的发布,主要有Deployment和Repository对应的service, session和cache,这里使用的缓存,所以每次使用流程定义的时候可以利用缓存提高效率。

org.jbpm.pvm.internal.script

包含对脚本的支持,默认支持了JuelScriptEngine。

org.jbpm.pvm.internal.session

支持各种会话,DbSession, MessageSession, RepositorySession和TimerSession。

org.jbpm.pvm.internal.spring

只有一个CommandTransactionCallback用来实现从spring中获得事务,并用其执行jbpm中定义的各种命令

org.jbpm.pvm.internal.stream

用于从各种途径读取资源,无论是jbpm配置文件和流程资源都要通过这些来转换成流的形式,以供给jbpm处理。

org.jbpm.pvm.internal.svc

其中svc或许是service的缩写。这个包中除了包括org.jbpm.api包下定义的所有service接口的实现,还包括commandService的实现和认证拦截器。

org.jbpm.pvm.internal.task

代表了所有与任务,任务参与者相关的信息,包括Assignable, AssignmentHandler, OpenTask, Participation, Swimlane, Task, TaskDefinition。简单划分后,主要有任务,任务定义任务处理。剩下的都是与任务分配有关了。TaskDefinition从字面上来看是指任务定义,里边只有一个getName()。Task中保存了任务相关的一些内容,OpenTask主要用来处理历史事件。参与者部分基本分成三个部分,以Assignable和AssignmentHandler组成的自定义分配部分,Participation参与者和swimlane泳道。暂时没有发现三者之间与任务的联系。
分享到:
评论

相关推荐

    开始jbpm之旅(二)

    NULL 博文链接:https://panshaobinsb.iteye.com/blog/1750793

    jbpm介绍jbpm介绍jbpm介绍jbpm介绍jbpm介绍

    jbpm介绍jbpm介绍jbpm介绍jbpm介绍jbpm介绍jbpm介绍jbpm介绍jbpm介绍jbpm介绍jbpm介绍jbpm介绍jbpm介绍

    jbpm的一个实例

    JBPM是一个扩展性很强的工作流系统,百分百用JAVA语言开发,持久层采用Hibernate实现,理论上说,只要Hibernate支持的数据库JBPM都支持。同时它还能被部署在任何一款JAVA应用服务器上 JBPM的工程文件,大家可以到...

    jbpm简介\jbpm简介

    \jbpm简介\jbpm简介\jbpm简介\jbpm简介\jbpm简介

    jbpm jbpm4.3.jar

    jbpm jbpm4.3.jar DDDDDDDD

    jbpm 数据库jbpm 数据库

    jbpm 数据库jbpm 数据库jbpm 数据库jbpm 数据库jbpm 数据库

    jbpm开发指南--jbpm全面介绍

    通过查看JBPM的表,我们知道要实现流程监控功能就是把JBPM当中的JBPM_PROCESSDEFINITION(已发布的流程表),JBPM_PROCESSINSTANCE(流程实例表),JBPM_TASKINSTANCE(流程产生的任务实例表)这三张表串联起来就可以...

    jbpm 案例 jbpm jbpm

    jbpm使用案例,非常不错,大家都来看看吧。

    jbpm3.2表说明

    JBPM_TRANSITION JBPM_TRANSITION FK_TRANSITION_FROM FROM_ 一个NODe可以做为多个TRANSITION的开始 JBPM_EVENT JBPM_EVENT FK_EVENT_NODE NODE_ 一个NODE可以有多个EVENT JBPM_TOKEN JBPM_TOKEN FK_TOKEN_NODE ...

    JBPM工作原理及表结构详解

    本文件从JBPM的原理、实现方法、实例等...6.3 开始一个流程STARTPROCESSINSTANCEBYKEY后 19 6.4 填写申请信息 19 6.5 审批申请信息 19 6.6 审批结束 20 7、简单的流程实例: 21 8、配置文件 25 9、JBMP4.4包作用: 26

    JBPM采购申请系统——12_JBPM异步(一).7z

    JBPM采购申请系统——12_JBPM异步(一).7z JBPM采购申请系统——12_JBPM异步(一).7z JBPM采购申请系统——12_JBPM异步(一).7z JBPM采购申请系统——12_JBPM异步(一).7z JBPM采购申请系统——12_JBPM异步(一).7z JBPM...

    jbpm4jbpm5

    jbpm应用开发指面(胡奇) jbpm4.3表结构和表字段说明 [jBPM开发指南].高杰.文字版 jBPM5_用户手册-中文版

    jbpm5第一个例子

    做好myeclipse集成后,按官方的文档做第一个例子即可。 http://www.mastertheboss.com/jbpm5/jbpm-5-tutorial-first-example 一般不会的问题,从官方找就行,但上面说的也不详细,结果搞了一天也没通,后来把条件...

    JBPM4.4之HelloWorld示例

    JBPM4.4之HelloWorld示例

    JBPM5工作流引擎 S2SH+JBPM4.4开发工作流的一个完整的请假流程例子

    JBPM5工作流引擎 S2SH+JBPM4.4开发工作流的一个完整的请假流程例子。带有文档教程和所有源码+JAR包。在网上找了半天jbpm6\jbpm7的资料,都很少。所以 环境:Myeclipse2015 JDK1.7 mysql 5.0 Struts2+Spring3.1 1...

    JBPM采购申请系统——21_JBPM4.0与JBPM3.0差异(一).7z

    JBPM采购申请系统——21_JBPM4.0与JBPM3.0差异(一).7z JBPM采购申请系统——21_JBPM4.0与JBPM3.0差异(一).7z JBPM采购申请系统——21_JBPM4.0与JBPM3.0差异(一).7z JBPM采购申请系统——21_JBPM4.0与JBPM3.0差异(一)...

    jbpm4源码jbpm4源码jbpm4源码

    jbpm4源码jbpm4源码jbpm4源码

    jbpm创建数据库jbpm创建数据库

    jbpm创建数据库jbpm创建数据库jbpm创建数据库jbpm创建数据库jbpm创建数据库jbpm创建数据库jbpm创建数据库jbpm创建数据库jbpm创建数据库

    JBPM范例 可以运行 简单易懂 快速掌握JBPM

    JBPM范例 可以运行 简单易懂 快速掌握JBPM

    JBPM4 SSH EXTJS JBPM SSH EXTJS

    JBPM4 SSH EXTJS JBPM SSH EXTJS JBPM4 SSH EXTJS JBPM SSH EXTJS JBPM4 SSH EXTJS JBPM SSH EXTJS JBPM4 SSH EXTJS JBPM SSH EXTJS 希望对大家有帮助。

Global site tag (gtag.js) - Google Analytics