`
panshaobinSB
  • 浏览: 203915 次
  • 性别: 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之旅(二)

    【标题】"开始jbpm之旅(二)" 涉及的知识点主要集中在jbpm这个开源工作流管理系统上,这是对前一章节的延续,旨在帮助读者深入理解和掌握jbpm的使用。jbpm是一个用于建模、执行和管理业务流程的Java平台。在这一阶段...

    jbpm开发入门指南

    jbpm(Java Business Process Management)是一款开源的工作流程管理系统,它为业务流程的建模、部署、执行和监控提供了全面的解决方案。...了解和掌握上述知识点,将为你的jbpm开发之旅打下坚实的基础。

    MyEclipse 10 JBPM 配置

    通过以上步骤,你已经在MyEclipse 10中成功配置了JBPM开发环境,可以开始你的业务流程管理应用的开发之旅了。记得在开发过程中不断学习和熟悉JBPM的相关概念和技术,如工作流定义、任务节点、事件处理等,以提升你的...

    jbpm4.4学习教程

    jbpm4.4学习教程是一套专为初学者设计的教育资源,旨在帮助用户掌握jbpm这一业务流程管理(Business Process Management)框架的第4.4版本...希望这个教程能为您的学习之旅提供全面的指导,助您成为jbpm的熟练使用者。

    jBPM3的学习心得

    **jBPM3学习心得** jBPM3是一款开源的工作流管理系统,主要用于处理业务流程的自动化和管理。它提供了一套完整的解决方案,包括流程建模、执行和监控,...希望我的这些学习心得能为你的jBPM3之旅提供一些参考和启示。

    深入浅出jBPM.1-6章测试代码_jbpm-test.rar

    《深入浅出jBPM:1-6章测试代码详解》 jBPM,全称为Java Business Process Management,是一款开源的工作流管理...希望这篇关于《深入浅出jBPM:1-6章测试代码详解》的内容能对你在jBPM的学习之旅中提供有价值的指导。

    JBPM4工作流应用开始指南.rar

    第一篇 jBPM工作流开发基础 1 第1章 工作流基础 2 1.1 工作流概念 2 1.1.1 工作流管理思想之于企业现代化管理 2 1.1.2 工作流技术在企业中的应用 5 1.1.3 如何从一个开发者的角度看工作流技术 6 1.2 工作流管理系统...

    JBPM 开发指南

    为了开始 JBPM 的开发之旅,你需要做一些准备工作: - **下载 JBPM**: 你可以从官方网站 [http://www.jboss.com/products/jbpm](http://www.jboss.com/products/jbpm) 下载最新的 JBPM 版本。本文档使用的是 3.2.1 ...

    jbpm-bpel-1.1.1 userguide\

    开始使用前,首先需要获取jBPM BPEL组件及JBoss应用服务器。这两个组件是实现BPEL流程执行的基础平台。 #### Apache Ant安装 Ant是一个基于Java的构建工具,对于编译、部署jBPM BPEL应用程序至关重要。确保Ant正确...

    OA管理系统MyOA

    工作流的起源以及发展作了简单的介绍,其中主要介绍了在工作流领域的 BPMN2.0 规范,BPMN2.0 规范为工作流应用提供了语言以及图形的标准,在 1.2 小节介绍 ...Activiti 的简单介绍后,本书将带领读者开始 Activiti 之旅

    yaoqiang-bpmn-editor-2.0.91.jar.zip_bpmn_yaoqiang

    yaoqiang BPMN2.0设计器是一款专为流程图设计打造的工具,主要用于支持Activiti和JBPM等流行的业务流程管理系统。...通过下载并解压`yaoqiang-bpmn-editor-2.0.91.jar.zip`文件,用户即可开始他们的流程设计之旅。

    新手如何学习编程.doc

    ### 新手如何学习编程 对于初次接触编程领域的新手而言,如何有效地学习编程是一大挑战。本文将根据给定的文件信息,详细阐述几个关键的学习...希望每位初学者都能找到最适合自己的学习路径,开启精彩纷呈的编程之旅。

    baidu全景图flex设计器

    在提供的文件名称列表中,“jbpm”可能指的是Java Business Process Management(Java业务流程管理)系统,这与全景图设计器似乎没有直接关联,但可能暗示着该设计器支持与BPM系统的集成。BPM系统用于管理、设计和...

Global site tag (gtag.js) - Google Analytics