好文档 - 专业文书写作范文服务资料分享网站

深入浅出 jBPM 电子书

天下 分享 时间: 加入收藏 我要投稿 点赞

jBPM的典型部署中将包括流程定义和流程执行的持久化,在这种情况下,jBPM除了对hibernate及其所依赖库之外不再有任何其他依赖。 当然,hibernate所需要的库依赖于环境以及你将使用的特性,详细信息请查询hibernate文档。下表给出了一个普通POJO部署环境下的指示。 jBPM的发布使用hibernate3.1,但是它也可以使用3.0.x,如果那样的话,你不得不在hibernate.queries.hbm.xml配置文件中更新一些hibernate查询,有关自定义查询的更多信息,请看“7.6自定义查询”。 表格 5.2 库 hibernate3.jar antlr-2.7.5H3.jar cglib-2.1_2jboss.jar Commons-collection.jar ehcache-1.1.jar jaxen-1.1-beta-4.jar jdbc2_0-stdext.jar asm.jar asm-attrs.jar 用途 描述 hibernat最好的e持久化。 O/R映射器。 由解析库。 hibernate持久化的查询分析使用。 hibernathibernate持久化。 e代理所使用的反射库。 hibernat e持久化。 hibernat二级缓存e持久化实现,当(默认配为置)。 hibernate配置不同的的缓存时,不需要本库。 流程定义XPath库和(由hiberantdom4j使e持久化。 用)。 hibernat e持久化。 hibernatasm字节e持久化。 码库。 hibernatasm字节e持久化。 码库。 目录 lib/hibernate(hibernate3.1) lib/jboss(从jboss4.0.3) lib/jboss(从jboss4.0.3) lib/jboss(从jboss4.0.3) lib/hibernate lib/hibernate lib/hibernate lib/hibernate lib/hibernate beanshell库是可选的,如果你不包含它,你将不能把beanshell集成到jbpm流程语言中使用,并且你将会得到一个日志信息说“jbpm不能加载Script类,因此script元素不能使用”。 表格 5.3 库 用途 bsh-1.3.0.1.jar beanshell脚本解释程序。 描述 目录 只用在script和decisionlib/jboss 元素中,当你不使用这些流程元素时,可以移除beanshell库,但是必须在hibernate.cfg.xml文件中注释掉Sceipt.hbm.xml映射行。 第6章 配置 jBPM配置由java类org.jbpm.JbpmConfiguration来描述,获取JbpmConfiguration如果你想从另外一个源加载配置,你可以使用JbpmConfiguration.parseXxxx方法。 的最简单方式是使用单态实例方法JbpmConfiguration.getInstance()。 static JbpmConfinguration jbpmConfiguration = JbpmConfinguration.getInstance(); JbpmConfiguration是线程安全的,因此可以在一个静态成员中维护,所有的线程都可以把JbpmConfiguration作为一个JbpmContext对象的工厂来使用。JbpmContext表示一个事务,在一个上下文块中JbpmContext使服务可用,上下文块如下: JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext(); try { // This is what we call a context block. // Here you can perform workflow operations } finally { jbpmContext.close(); } JbpmContext使一组服务和配置为jBPM可用,这些服务在jbpm.cfg.xml配置文件中被配置,并且使jBPM无论运行在任何java环境中这些服务都可用。 下面是JbpmContext的一个典型配置,就象你在src/config.files/jbpm.cfg.xml中看到的那样:

factory='org.jbpm.security.authentication.DefaultAuthenticationServiceFactory' />

value='org/jbpm/calendar/jbpm.business.calendar.properties' />

value='org/jbpm/graph/def/jbpm.default.modules.properties' />

value='org/jbpm/db/hibernate/jbpm.converter.properties' />

value='org/jbpm/graph/action/action.types.xml' />

value='org/jbpm/graph/node/node.types.xml' />

value='org/jbpm/jpdl/par/jbpm.parsers.xml' />

value='org/jbpm/context/exe/jbpm.varmapping.xml' />

class='org.jbpm.taskmgmt.impl.DefaultTaskInstanceFactoryImpl' singleton='true' />

class='org.jbpm.jpdl.el.impl.JbpmVariableResolver' singleton='true' />

在这个配置中你可以看到三部分:

l 第一部分使用一组服务实现配置jbpm上下文,这些配置的可选项在以后描述特定服务实现的章

节中做了描述。

l 第二部分是所有配置资源的引用映射,如果你想要定制某些配置文件,这些资源引用可以被修改。

典型情况下,你可以在jbpm-3.x.jar中拷贝一个默认的配置,并且把它放在classpath中的某个位置,然后在这个文件中修改引用为你自己定制版本的配置文件。

l 第三部分是在jbpm中使用的一些别名配置,这些配置选项在包含特定主题的章节中做了描述。

缺省配置的一组服务被定位于一个简单的web应用环境和最小的依赖,持久化服务将获得一个jdbc连接,所有其他服务将会使用这个相同的连接来完成它们的服务,因此,工作流的所有操作都被集中到一个JDBC连接的一个事务中,不再需要事务管理器。

JbpmContext包含为大多流程操作所提供的方便方法:

public void deployProcessDefinition(ProcessDefinition

processDefinition) {...}

public List getTaskList() {...}

public List getTaskList(String actorId) {...}

public List getGroupTaskList(List actorIds) {...}

public TaskInstance loadTaskInstance(long taskInstanceId) {...} public TaskInstance loadTaskInstanceForUpdate(long taskInstanceId) {...}

public Token loadToken(long tokenId) {...}

public Token loadTokenForUpdate(long tokenId) {...}

public ProcessInstance loadProcessInstance(long processInstanceId) {...}

public ProcessInstance loadProcessInstanceForUpdate(long processInstanceId) {...}

public ProcessInstance newProcessInstance(String processDefinitionName) {...}

public void save(ProcessInstance processInstance) {...} public void save(Token token) {...}

public void save(TaskInstance taskInstance) {...} public void setRollbackOnly() {...}

记住,XxxForUpdate方法将记录所加载的对象为自动保存的,因此不需要再调用save方法。

指定多个jbpm上下文是可能的,但是你必须确保每个jbpm上下文的name属性必须是唯一的,可以使用JbpmConfiguration.createContext(String name)获取命名的上下文。

service元素定义了一个服务名称和此服务的服务工厂,服务将只会在使用JbpmContext.getServices().getService(String name)请求时被创建。

工厂也可以被作为一个元素来指定,而不是用属性。那样可以用于在工厂对象中注入一些配置信息,负责解析XML的组件创建和装配被调用的对象工厂。

6.1 配置属性

jbpm.byte.block.size:文件附件和二进制变量被存储到数据库,不是作为blob,而是作为一个固定大小的二进制对象列表,这可以方便用于不同数据库并且提高jBPM的全面嵌入能力,这个参数控制了固定长度块的大小。

jbpm.task.instance.factory:定制任务实例的创建方式,在这个属性中指定一个全类名,当你想要定制TaskInstance bean并且向它添加新的属性时,这是有必要的。请参考“11.10 定制任务实例”,指定的类必须实现org.jbpm.tskmgmt.TaskInstanceFactory。

jbpm.variable.resolver:定制jBPM在JSF表达式中寻找第一个术语的方式。 jbpm.msg.wait.timout:定制消息缓存的时间。

6.2 配置文件

下面是对在jBPM中定义的所有配置文件的简短描述。

6.2.1 Hibernate.cfg.xml文件

这个文件包含hibernate配置,并且引用hibernate映射资源文件。 位置:hibernate.cfg.xml文件如果不另外在jbpm.properties文件的

jbpm.hibernate.cfg.xml属性中指定,则jBPM工程中的默认hibernate配置文件在目录src/config.files/hibernate.cfg.xml。

6.2.2 Hibernate查询配置文件

这个文件包含jBPM会话org.jbpm.db.*Session中所使用的hibernate查询。 位置:org/jbpm/db/hibernate.queries.hbm.xml。

6.2.3 节点类型配置文件

这个文件包含了XML节点元素到节点实现类的映射。 位置:org/jbpm/graph/node/node.types.xml。

6.2.4 动作类型配置文件

这个文件包含了XML动作元素到动作实现类的映射。 位置:org/jbpm/graph/action/action.types.xml。

6.2.5 业务日历配置文件

包含了业务时间和空闲时间的定义。

位置:org/jbpm/calendar/jbpm.business.calendar.properties。

6.2.6 变量映射配置文件

指定了流程变量(java对象)的值怎样转换到用于存储到jbpm数据库中的变量实例。 位置:org/jbpm/context/exe/jbpm.varmapping.xml。

6.2.7 转换器配置文件

指定了id到类名的映射。id被存储到数据库,

org.jbpm.db.hibernate.ConverterEnumType被用来映射id到单态对象。

位置:org/jbpm/db/hibernate/jbpm.converter.properties。

6.2.8 缺省模块配置文件

指定哪个模块被缺省添加到一个新的流程定义ProcessDefinition。 位置:org/jbpm/graph/def/jbpm.default.modules.properties。

6.2.9 流程档案解析器配置文件

指定流程档案解析的解析器。

位置:org/jbpm/jpdl/par/jbpm.parsers.xml。

6.3 对象工厂

深入浅出 jBPM 电子书

jBPM的典型部署中将包括流程定义和流程执行的持久化,在这种情况下,jBPM除了对hibernate及其所依赖库之外不再有任何其他依赖。当然,hibernate所需要的库依赖于环境以及你将使用的特性,详细信息请查询hibernate文档。下表给出了一个普通POJO部署环境下的指示。jBPM的发布使用hibernate3.1,但是它也可以使用3.0.x,如果那样的话,你不得不在hibern
推荐度:
点击下载文档文档为doc格式
8l9bb1yjqg01k8300sny
领取福利

微信扫码领取福利

微信扫码分享