Java版 工作流
Shark
Shark是体系和功能最为复杂的代表。它是另一款遵循WfMC的XPDL标准开源工作流引擎,并且同时遵循OMG组织的Workflow Management Facility规范。在所有开源工作流引擎中,Shark的体系最为完备和复杂。其一直秉承着“模块化”的思想,所以比较容易扩展。但是自从被Together公司收购后,Shark的商业化色彩已经越来越浓,改称为Together Workflow Server,并仅以Community Edition的形式提供了部分开源代码供参考。
OSWorkflow
OSWorkflow是最轻量型的代表,也是一款非常灵活和低级别定位的工作流引擎的实现框架。低级别定位的意思是说,它不是定位在解决流程模型对象和运转场景,而是提供一套可维护调度的机制,供开发人员自主扩展。这个维护流程调度机制OSWorkflow选择的是基于行为(Action)的FSM理论,所以OSWorkflow更像是一个复杂而灵活的有限状态调度机。
OSWorkflow在国内项目应用得较多,很多国内的简易审批流程项目都是基于其引擎二次开发而来。这主要是由于OSWorkflow是基于Action驱动的,而国内的客户也很容易接受这样的操作习惯。但OSWorkflow所依赖的FSM模型对于分支、聚合、子流程的支持度很低,这一点在实施过程中需要注意。
jBpm
jBpm是最适合扩展的代表,是在所有开源引擎中最适宜被商业化应用的一款。首先其流程建模模型是基于Activity Diagram(活动图)的,并在引擎构建上融入了FSM和PetriNet思想,所以其内核和根基比较牢固扎实。其次,自从被JBoss收购后,其3. x系列的结构更加趋于微内核,Plug-in思想也更加深入。其同时还提供了对BPEL扩展,存储支持JBoss Hibernate实现,集成了JBoss seam,规则引擎准备采用JBoss rules,并准备集成JBoss Messaging。这样,不论从内核和外围应用,jBpm都具有了强劲的动力。
另外,jBpm对Token的应用也很有特色,巧妙地利用Parent-Child Token的机制处理分支、父子流程等复杂应用场景。这个设计思想很值得大家学习参考。
YAWL
YAWL是算法和模式最值得研究的代表,它是Alast力主倡导的一款基于PetriNet建模的工作流引擎,其将PetriNet的Token与And、XOR、OR算法进行了融合,并对Workflow Patterns(工作流模式)中所有模式提供支持。但YAWL本身仅是一个研究性项目,所以其结构和实现缺少了商业化应用的特点。但有必要研究一下YAWL,一方面可以加深对工作流模式的理解,另一方面,YAWL的一些建模思想、处理算法很值得推敲和吸纳。
ActiveBPEL
ActiveBPEL 是BPEL引擎的代表,也是一款可执行BPEL4WS规范的开源流程引擎,其结构和实现方式具有很高的参考价值。目前国内很多正在开发基于BPEL产品的中小型软件厂商,其实现的很多基础性内容和思想都参考自ActiveBPEL。受目前国内中小型客户对流程需求的限制,基于BPEL的开源引擎或小型产品被市场接受度还很低。但BPEL所围绕的业务流程及流程整合应用是一个发展趋势。
转自:http://hi.baidu.com/aengal/blog/item/b7f13e1f95ff9f01304e159d.html
分享到:
相关推荐
Java 实现工作流中文WORD版 本资源主要介绍 Java 实现工作流的相关知识点,涵盖工作流的概念、MVC 工作模式、JSP 技术等。 工作流的概念 工作流是指在一个系统中,按照某种规则和顺序执行的一系列任务或活动的...
这个压缩包文件包含了一个名为"osworkflow例子"的示例项目,它很可能是基于OSWorkflow框架的一个实例,OSWorkflow是Java领域中常用的工作流引擎之一。 首先,我们需要理解什么是工作流。工作流是指一系列相互关联、...
在Java中,可以通过设计实体类来表示不同的组织单元和用户,再通过关系映射来体现组织结构。 3. 所用相关技术和方法 3.1 工作流 工作流由几个核心概念组成:工作流定义(WFD)、工作流实例(WFInstance)、任务...
Java是B/S架构中常用的后端开发语言,其跨平台、稳定性强的特点使其在企业级应用中占据主导地位。在工作流定制软件中,Java主要负责业务逻辑的处理,如工作流引擎的实现、数据模型的设计等。 3. **工作流引擎** ...
1. Python脚本:用于发起工作流请求,可能通过Jython调用Java中的工作流API。 2. Java类:实现JBPM的工作流逻辑,可能包括启动、处理任务、完成节点等操作。 3. Maven配置:定义了项目的依赖关系和构建过程。 4. ...
`javaweb`和工作流相关的`jar`包是Java Web应用和工作流程管理系统中的关键组件。下面将详细介绍这些知识点。 1. **Java Web**: - **Servlet**:Java Servlet是Java Web开发的基础,它是一个Java类,用于扩展...
JUnit是Java中广泛使用的单元测试框架,它提供了断言、测试套件等功能,帮助开发者编写可测试的代码。 总之,Java工具类是提高开发效率的关键,它们封装了常见的操作,减少了代码重复,提高了代码可读性和维护性。...
在Java中,IO流被设计为处理任何类型的数据,包括字符、字节甚至对象。本练习旨在帮助初学者理解和掌握Java IO流的基础知识。 一、IO流的概念 IO流在Java中分为两大类:输入流(Input Stream)和输出流(Output ...
标题中的"oa.rar_OA.mdf_java 工作流_oa java_公文 流程_工作流"表明这是一个与企业信息化管理系统相关的压缩包,主要关注的是OA(Office Automation)系统,工作流(Workflow)以及Java编程语言在实现这些功能上的...
"java常用工具类"这个主题涵盖了Java开发中常用的类和方法,这些工具类可以帮助我们简化编程工作,提高代码的可读性和可维护性。在Java中,`java.util`包就是这样一个包含大量工具类的包,提供了很多实用的功能。 1...
基于Web的工作流管理系统受到商业的广泛关注,但目前常用的Web技术难以解决现代分布式应用中存在的诸多问题,本文提出了工作流管理系统结构综合利用了Web,Java和CORBA技术,以Web技术作为客户...
"Java常用工具类大全,工作5年精心整理.zip"这个压缩包文件很可能包含了一位有经验的Java开发者在五年工作中积累的各种实用工具类,这些工具类能够极大地提高开发效率,简化代码编写。以下是对可能包含的知识点进行...
`java.lang.String`是不可变的字符序列,是Java中最常用的数据类型之一。字符串操作如连接、查找、替换等都可以通过String类的方法完成。`StringBuilder`和`StringBuffer`在需要频繁修改字符串内容时更为高效,因为...
《Java常用算法手册》是一本深入探讨Java编程中常见算法的实用指南,旨在帮助开发者提升在实际工作中解决复杂问题的能力。...通过阅读这本书,你可以系统地学习和实践Java中的算法,为你的职业生涯增添更多的可能。
- **Exception类**:所有异常的基类,Java中的异常处理机制基于try-catch-finally结构。 - **Checked异常**:如IOException,需要在编译时被处理。 - **Unchecked异常**:如NullPointerException,运行时才会抛出...
本文将深入探讨几个Java中常用的类,包括它们的功能、实现原理以及如何在实际项目中应用。 1. `String` 类:Java中的字符串是不可变对象,由`String`类表示。源码中可以看到`String`是如何实现字符串拼接、比较和...
1. **数据库连接**:Java中,我们通常使用JDBC(Java Database Connectivity)接口来连接各种关系型数据库。如`mysql-connector-java.jar`是连接MySQL数据库的驱动包,提供建立、执行SQL语句和管理数据库连接的方法...
以下是一些Java开发者在日常工作中经常会遇到的英语单词及其详细解释,它们涵盖了类、对象、方法、变量、控制流、数据类型等多个方面。 1. **类(Class)**:在Java中,类是面向对象编程的基础,它定义了对象的属性...