随笔分类 -  工作流

摘要:JBPM节点分支之Group节点分析 JBPM的众多节点类型中,唯独Group节点比较有个性;Group节点作为众多的节点中的一员,其并不能完成业务功能,但其作为一种节点的容器,可以对现有的节点类型进行“混搭”,从而构造出可以完成新的业务功能的节点类型!今天我们来简单的学习一下Group节点,后续我们会进行深入分析JBPM的并发设计时候再次提到Group节点。 Group节点功能分析 作为父容器,可以将复杂的业务功能进行封装为新的节点类型,便于业务复用和维护; 可以将各种复杂的业务过程嵌套到Group中,简化复杂的业务流程; 可以作为流程并发的边界容器; 可以作为子流程的承载容器,将子流程封. 阅读全文
posted @ 2011-09-25 21:44 无风听海 阅读(1937) 评论(0) 推荐(0) 编辑
摘要:JBPM流程部署之流程实例迁移解析与扩展 前面我们已经详细的介绍了JBPM的流程实例迁移的配置和使用,相信大家已经对JBPM提供的流程实例迁移有所了解;今天我们来深入的分析一下JBPM提供给我们的流程实例迁移策略和相关流程实例迁移对象,最后我们会对分析中提到的不足,进行扩展优化! 下面我们先来简单的介绍一下流程实例迁移中用的几个类。 MigrationHelper:负责解析JPDL中有关流程实例迁移的配置,最终生成migrationDescriptor来承载这些配置信息; InstanceMigrator:负责根据migrationDescriptor来进行流程实例迁移; ProcessIn. 阅读全文
posted @ 2011-09-05 05:51 无风听海 阅读(602) 评论(0) 推荐(0) 编辑
摘要:JBPM流程部署之流程实例迁移 前面我们已经学习了JBPM的流程版本升级,流程版本升级给我们带来了一个新的问题,那就是流程实例迁移;那么什么是流程实例的迁移呢?流程实例的迁移就是在流程发布的时候进行了版本升级,这个时候如果我们让已经运行的同一个流程的实例,按照新版本的流程定义来流转。流程实例的迁移是一件比较复杂的事情,今天我们就简单的来了解一下JBPM中流程实例迁移的使用,后续我们就简单的介绍一下相应的设计思路和扩展。 默认情况下,JBPM为我们提供了两种启动流程实例的方式ProcessInstanceprocessInstance=executionService.startProcess. 阅读全文
posted @ 2011-09-01 23:50 无风听海 阅读(1779) 评论(0) 推荐(0) 编辑
摘要:JBPM流程部署之流程版本升级 流程定义是根据流程定义描述语言(JPDL)对现实业务需求的抽象,是对现实业务需求的高度抽象化;现实中对于同一个流程定义,很少会一成不变,很多时候随着时间的流逝,我们的业务流程有少许的变化,那么我们就需要对流程进行一些改变,这个时候就会涉及到流程的版本升级的问题。今天我们来了解一下jbpm的版本升级的相关执行,最后我们会对JBPM的现有版本升级进行扩展思考。 以下是我对JBPM流程版本升级的相关知识的思考,结合下图我们展开今天的学习 流程的基本属性 Name,流程的名称,在与用户交互时,用于标示不同的流程,主要用于界面展示 Key,流程的键,用于标示同一类流程,. 阅读全文
posted @ 2011-08-31 05:42 无风听海 阅读(1228) 评论(0) 推荐(0) 编辑
摘要:JBPM流程部署之流程定义实体对象分析 JBPM中运行时使用的流程定义实体对象是ProcessDefinitionImpl,流程定义实体对象是流程流转的路线图,他是根据我们对jpdl的解析形成的,他是在我们发布流程的同时,或者是首次发起本版本的流程实例的时候进行实例化;由于流程定义实体的初始化需要动态的解析jpdl,所以相对来说还是很耗费资源的,所以ProcessDefinitionImpl一旦形成流程引擎就会将其缓存起来,以后就会直接从缓存中获取。 ProcessDefinitionImpl在流程引擎具有很重要的作用,除了作为流程流转的依据外,同时也需要具有一些别的特别重要的功能,那么现在. 阅读全文
posted @ 2011-08-28 06:38 无风听海 阅读(2258) 评论(8) 推荐(0) 编辑
摘要:JBPM流程部署之部署数据表分析 JBPM流程部署xml格式的流程定义,虽然引擎默认的在发布完后就直接将流程定义实体缓存,以方便以后的流程运行流转使用,避免不必要的数据库访问,但是这些缓存直接存储在内存中,很容易就会丢失掉,比如重启服务器等,所以最终我们还是需要持久化到数据库里。今天我们来了解一下JBPM与流程部署相关的数据库表。 JBPM的持久化层使用的是Java中被广泛使用的ORM框架Hibernate,下面我们看一下JBPM流程部署实体-数据表关系,其关系如下图所示 本来打算使用visio好好的画个图,但是无奈自己能力有限,只能画了个简单的图,下面我们简单的介绍一下 Deploy... 阅读全文
posted @ 2011-08-24 21:42 无风听海 阅读(1003) 评论(0) 推荐(0) 编辑
摘要:JBPM流程部署之部署解析器相关对象扩展 流程部署解析器是流程引擎很重要的部分,负责xml流程定义的解析并转化成运行时的流程定义实体对象,它在很大的程度上决定了流程定义xml的书写形式,当然了也可以说流程定义xml在很大的程度上决定了部署解析器的业务逻辑实现,只是因为站的角度不同;总之怎么强调部署解析器的重要性都不过分,可以说流程部署解析器就是流程定义描述语言的编译器,当我们发布流程的时候,它负责一次性编译好我们的xml流程语言,并最终形成我们流程引擎运行时使用的“语言”(流程定义运行时);流程部署相关对象主要涉及DeployManager、JpdlDeployer等对象。今天我们也简单的来. 阅读全文
posted @ 2011-08-21 08:50 无风听海 阅读(864) 评论(0) 推荐(0) 编辑
摘要:jbpm流程部署之部署服务相关对象扩展 流程部署服务是流程引擎提供给外界的调用接口,用于外部完成部署相关任务来使用,比如发布流程定义、通过流程名称或者流程ID获取流程定义等,所以说流程部署服务是流程引擎部署对外的门面。流程部署服务相关对象涉及到RepositoryService、RepositorySession、RepositoryCache,今天我们来体验一下JBPM在这方面的扩展性。 扩展RepositoryService流程部署服务 如果流程引擎提供的部署服务接口不能满足我们的业务需求,那么我们可以继承流程引擎服务RepositoryServiceImpl(当然我们也可以直接在这个类. 阅读全文
posted @ 2011-08-20 23:56 无风听海 阅读(606) 评论(0) 推荐(0) 编辑
摘要:JBPM流程部署之流程支持节点扩展 流程引擎支持的节点类型在很大的程度上决定了流程引擎对现实业务的支持能力,同时也需要能够灵活的扩展节点类型。通过上篇对流程部署环境的初始化,我们大致的了解到JBPM不仅提供能了众多的节点类型,这些节点基本上可以满足大部分的一般业务需求;同时我们也可以灵活的控制是否使用现有节点的某种类型;当然我们也可以灵活的扩展现有的节点类型和自定义节点的类型;那么现在我们来通过代码来体验JBPM流程引擎灵活的扩展性。 屏蔽JBPM流程引擎原有节点类型 如果我们不想使用JBPM本身提供的某种节点类型(例如hql),那么我们可以屏蔽掉它;我们知道JBPM在jbpm.jpdl.b. 阅读全文
posted @ 2011-08-19 00:07 无风听海 阅读(2217) 评论(0) 推荐(1) 编辑
摘要:JBPM流程部署之部署环境初始化 流程的部署是流程引擎需要完成的几个重要的任务之一,流程定义是现实中复杂业务需求在流程流转实现的体现;流程部署需要完成xml格式流程定义的校验、流程定义的持久化、流程定义到流程定义实体的转化、流程版本升级和流程实例的迁移等众多的功能; 今天我们来简单的学习一下流程部署的环境初始化;流程部署环境初始化需要完成部署服务、流程部署缓存、流程部署持久化相关对象、流程引擎支持的节点类型等相关binding对象及相关的部署解析器的实例化; 流程引擎支持的节点类型初始化 流程引擎支持众多的节点类型,比如任务节点、状态节点、子流程等等;此过程初始化JBPM默认支持的系统节点类. 阅读全文
posted @ 2011-08-17 01:04 无风听海 阅读(3376) 评论(1) 推荐(0) 编辑
摘要:Validation is a powerful tool. It enables you to quickly check that input is roughly in the form you expect and quickly reject any document that is too far away from what your process can handle. If there's a problem with the data, it's better to find out earlier than later.In the context of 阅读全文
posted @ 2011-08-14 06:29 无风听海 阅读(1814) 评论(0) 推荐(0) 编辑
摘要:JBPM流程定义校验之java利用XSD校验XML 上篇我们学习了在.net中怎样利用XSD来验证xml,今天我们来看一下在java中怎样实现利用xsd来校验xml! /****/packageWFTH;importjava.io.*;importjavax.xml.transform.Source;importjavax.xml.transform.stream.StreamSource;importjavax.xml.validation.*;importorg.xml.sax.SAXException;/***@author无风听海**/publicclassValidationMan. 阅读全文
posted @ 2011-08-14 01:51 无风听海 阅读(867) 评论(0) 推荐(0) 编辑
摘要:JBPM流程定义校验之.net利用XSD校验XML 上篇我们学习了在javascript中怎样利用XSD来验证xml,废话不在多说,今天我们来看一些怎样在.net中怎样实现利用xsd来校验xml! usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Xml.Schema;usingSystem.Xml;usingSystem.Xml.XPath;namespaceWFTH.XMLValidation{publicclassValidationManager{priv. 阅读全文
posted @ 2011-08-14 01:13 无风听海 阅读(477) 评论(0) 推荐(0) 编辑
摘要:JBPM流程定义校验之javascript利用XSD校验XML 上篇我们简单的介绍了一下XSD的相关知识,今天我们来学习一下在javascript中怎样利用XSD来验证xml;现在各大浏览器厂商中,好像就微软公布了相应的接口,其他的厂商需要我们自己来实现类库;所以今天我们讲的是在IE下利用XSD来验证xml。 我们先了解一下MSXML个版本对XML验证的支持情况Version Support MSXML仅支持DTD 验证,不支持xsd方式.MSXML 2.0 through 4.0支持XML-Data Reduced (XDR) 验证.MSXML 4.0 and later支持xsd验证方式. 阅读全文
posted @ 2011-08-14 00:58 无风听海 阅读(1350) 评论(0) 推荐(0) 编辑
摘要:- JBPM流程定义校验之XSD简介 JBPM的流程定义语言是JPDL,其本身是一种自定义结构的xml;JBPM的流程定义结构比较复杂,不仅元素的类型多样,而且对数据类型也有比较严格的要求,同时有很多元素有着相同的元素和属性等;做为流程引擎应该具有校验流程定义的有效性的能力,从而保证不会再流程流转过程中发生错误;同时流程引擎应该内置这种校验能力,而不能依赖流程设计器的校验!面对如此复杂的xml,JBPM首先使用XSD进行验证,然后再解析流程定义的同时进行一些XSD无法实现的校验!今天简单的介绍一下XSD的相关知识,然后接下来的将分别介绍在javascript、C#、java中怎样利用XSD对x 阅读全文
posted @ 2011-08-13 09:00 无风听海 阅读(590) 评论(0) 推荐(0) 编辑
摘要:在eclipse中运行jbpm4.4的流程测试用例 JBPM的源代码中有一些流程测试用例,对我们理解JBPM的运行机制和以JBPM为流程引擎进行二次开发都有很大的帮助,同时对我们理解JDPL也有一定的帮助。那么我们怎么样才能够在拿到JBPM源代码以后,最快的速度运行其中的测试用例呢?下面将我的方法分享如下: 使用JBPM的jar包 1.新建java project JBPMTest,并选择从已存在源创建,并选择JBPM根目录下的examples中的src即可; 2.单击下一步,选中libraries,并单击选择add external jars,选中JBPM根目录下的JBPM.jar并点击确. 阅读全文
posted @ 2011-08-07 10:00 无风听海 阅读(2217) 评论(0) 推荐(0) 编辑
摘要:JBPM深入解析之变量设计 在流程的流转的过程中,很多时候我们需要根据不同的实际情况传入一些初始化数据,以便完成我们个性化的业务需求;同时很多时候我们需要在不同的节点之间共享一些业务数据,特别是一些节点要以前一节点的输出作为输入等;变量对于流程引擎来说很重要,可以说没有变量,那么我们就不能运行时动态的设置和传入一些数据,这将极大的限制流程的灵活性! 变量类型 全局变量,所有的节点都可以获取并设置该变量的值 局部变量,只在该节点及其子节点可以获取并设置该变量的值 变量的传入 在流程定义中进行变量的定义 <?xmlversion="1.0"encoding="U 阅读全文
posted @ 2011-07-17 08:15 无风听海 阅读(3025) 评论(0) 推荐(0) 编辑
摘要:JBPM之Environment分析 只要们稍微深入的学习一下JBPM,我们就会发现代码的每个角落都有environment的影子,可见environment的地位之重要,今天我们学习一下environment的作用和使用方法,以及其中的一些运行机制! Environment的作用 线程安全对象,为每个线程维护一系列的资源 我们一般像这样使用Environment获取资源对象 Sessionsession=EnvironmentImpl.getFromCurrent(Session.class); EnvironmentImpl中对应的代码实现//线程安全的真正原因staticThreadLo 阅读全文
posted @ 2011-07-02 00:27 无风听海 阅读(1764) 评论(0) 推荐(0) 编辑
摘要:JBPM之长事务设计解析 在企业开发中,很多时候我们需要把一些业务数据持久化到数据库中;在数据要求不是很高的场景下,我们可以不用考虑事务的提交和回滚;但是很多时候,我们面临的很多的数据库脚本需要保证要成功就都执行成功,否则就要回滚;特别是在流程运行中提交时,我们需要处理上一个节点的相关数据,同时也要处理提交到得节点的相关数据,我们需要保证这些数据的正确性和一致性,特别是在发生异常时,我们需要回滚所有的操作。今天我们来分析一下JBPM的事务设计。 JBPM数据库长事务处理是通过拦截器和具体的承载数据库脚本的命令完成的,下面分别进行简单的分析(以下分析是针对hibernate事务进行分析,spin 阅读全文
posted @ 2011-06-25 19:03 无风听海 阅读(2083) 评论(0) 推荐(0) 编辑
摘要:JBPM中JPDL深入解析 流程引擎需要根据流程定义进行业务流程的流转,所以提供一种简单直观、易用方便、便于扩展的流程定义方式就显得直观重要了。JBPM提供了自己的一套流程定义语言JPDL,通过对JPDL的分析解决,我们可以了解其架构设计和运行机制,以便根据业务需求进行灵活的扩展。 JBPM中JPDL架构设计1. 定义相关的xsd文件(比如jpdl-4.0.xsd、jpdl-4.2.xsd、jpdl-4.3.xsd、jpdl-4.4.xsd)。Xsd定义了流程定义xml的整体架构,既xml中的元素和属性,其也就决定了我们定义的流程定义的xml的形式;同时在流程发布的时候也会使用xsd进行验证。 阅读全文
posted @ 2011-05-15 17:35 无风听海 阅读(2929) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示