OSWorkflow

2008年8月9日 – 15:14

       OSWorkflow用纯Java语言编写,并且开放源代码。它最大的特点就是极其的灵活。它面向的用户群是具有技术背景的软件开发人员,用户可以根据自己的实际需求,用XML配置出完全符合自身业务逻辑的流程,从而取代复杂的代码。OSWorkflow适用于任何Java平台,并且在企业ERP开发中得到了非常广泛的应用。本书主要介绍了OSWorkflow的必要文件、运行示例,如何持久化,如何和Spring、OScore整合,如何理解OSWorkflow,以及GUI可视化设计器的使用和使用OSWorkflow的接口创建工作流等。

网站:http://www.opensymphony.com/osworkflow/

OSWorkflow中文手册:http://www.infoq.com/cn/minibooks/OSWorkflow-Chinese-manual

JBPM

2008年8月7日 – 23:50

JBoss jBPM 是一个复杂的可扩展的工作流管理系统. JBoss jBPM 有直观的流程语言来表示商业流程图的术语比如,任务,异步通讯的等待状态,定时器,自动操作等等.把这些操作绑在一起,, JBoss jBPM 就有了最强大和易扩展性的控制流机制.

JBoss jBPM 只有最小的倚赖性可以很容易的作为java库来使用.当然它也可以用在吞吐量极为关键的J2EE 群应用服务器环境中.

JBoss jBPM 可以同任何数据库配置可以部署在任何应用服务器上.

综述

核心工作流和BPM 功能被封状作为一个简单的Java库.这个库包括在jBPM数据库中存储,更新和检索流程信息的服务


Figure 1.1. JBoss jBPM 组件一览

JBoss jBPM 新手工具箱
新手工具箱是包含了jBPM所有组件包在一个可下载的包里.

这个包包括:

jbpm-server , 预先配置的jboss 应用服务器.
jbpm-designer , jBPM流程图形化设计器的eclipse 插件 .
jbpm-db , jBPM 数据库兼容包 .
jbpm , 核心jbpm组件包括库和本手册.
jbpm-bpel , JBoss jBPM BPEL 扩展参考.
预配置的JBoss 应用服务器有下列安装组件:

核心jBPM 组件 , 打包作为JBoss服务档案

一个包括所有jBPM 表格的完整数据库 : 默认的 hypersonic 数据库包含所有的jBPM 表格和已经定义的流程.
jBPM 控制台web应用程序 这个可以用来为jBPM管理员.
jBPM调度程序 所有定时器的执行. 调度程序在新手工具箱里配置成了一个servlet.这个Servlet会为产生一个线程来监视每个定时器的执行.
一个流程例子 已经发布进了jBPM 数据库.
JBoss jBPM 图形化流程设计器
JBoss jBPM 也包括一个图形化的流程设计工具. 这个设计器是用来创作商业流程的。

JBoss jBPM 图形设计器是一个Eclipse插件. 独立安装版本的设计器工具已经在开发路线图里了.

图形化设计工具最重要的特性是它同时支持业务分析员和技术开发人员. 这样就可以在业务流程建模和实际执行之间平滑转换.

插件可用做为本地的update site(Eclipse 纯粹的zip文件),用做符合Eclipse软件更新机制的安装包. 当然你也可以把它展开到你的Eclipse的安装目录.

JBoss jBPM核心组件
JBoss jBPM 核心组件是纯粹的Java(J2SE)软件,来处理流程定义和运行时的流程实例执行.

JBoss jBPM 是一个Java库. 因此,它可以用在任何java环境比如web 应用程序,Swing应用程序,EJB,Web Service等等. jBPM 库可以被打包作为sateless session EJB(无状态会话EJB). 这可以用做集群的发布具有极高的吞吐量可伸缩性. 无状态会话EJB根据J2EE 1.3规范重新写过所以可以发布到任何应用服务器上.

JBoss jBPM 核心组件被打包成一个简单的Java库文件.依赖你所使用的功能性, 库 jbpm-3.0.jar及一些相关的第三方的库比如 . hibernate, dom4j 等等. 这些相关性在 第五章发布 有清晰的描述

永久性方面, jBPM内部使用hibernate. 除了传统的O/R 映射外, hibernate也分析不同数据库系统的SQL方言 ,这使jBPM在当前所有的数据库上都可以移植.

JBoss jBPM API 可以从项目中任意编写的Java软件访问,比如Web应用程序,EJB,或web Service组件,消息bean或其他java组件.

JBoss jBPM控制台web应用程序
jBPM 控制台web应用程序是为两个目的服务的.首先,它作为流程执行运行时间任务生成的中央用户接口. 其次, 它也是一个管理和监视控制台允许检查和操作运行中的流程实例.

JBoss jBPM 身份组件
JBoss jBPM可以集成进任何包含公司用户和组织信息的目录. 对项目来说从那里得到组织信息组件不是容易得到的, JBoss jBPM就包含这个组件. 身份组件使用的模型比通常的servlet,ejb和门户模型跟富有.

JBoss jBPM 调度程序
JBoss jBPM 调度程序是用来监视和运行已经计划到时执行流程的定时器的组件.

定时器组件被打包在核心jbpm库中, 但是它需要被发布到下面的任一环境中: 要不你把调度程序Servlet来产生监视线程或者就必须用独立的JVM来调用调度程序的main方法.

JBoss jBPM 数据库兼容包
JBoss jBPM 数据库兼容包包括所有支持数据库的相关信息,JDBC驱动程序和数据库初始化脚本.

JBoss jBPM BPEL扩展
JBoss jBPM BPEL扩展是独立的扩展包用来支持BPEL(Business Process Execution Language 商业流程执行语言). BPEL的基本要素是 xml Scripting语言用来写其他web server的web services.

网站:http://www.jboss.org/jbossjbpm/

中文手册:http://www.zhouxing.org/doc/jbpm3.0.chm

ibatis

2008年8月7日 – 17:03

      iBATIS一词来源于“internet”和“abatis”的组合,是一个由Clinton Begin在2001年发起的开放源代码项目。最初侧重于密码软件的开发,现在是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO),同时还提供一个利用这个框架开发的JPetStore实例。

      使用ibatis 提供的ORM机制,对业务逻辑实现人员而言,面对的是纯粹的Java对象, 这一层与通过Hibernate 实现ORM 而言基本一致,而对于具体的数据操作,Hibernate 会自动生成SQL 语句,而ibatis 则要求开发者编写具体的SQL 语句。相对Hibernate等 “全自动”ORM机制而言,ibatis 以SQL开发的工作量和数据库移植性上的让步,为系统 设计提供了更大的自由空间。作为“全自动”ORM 实现的一种有益补充,ibatis 的出现显 得别具意义。

      相对Hibernate和Apache OJB 等“一站式”ORM解决方案而言,ibatis 是一种“半自动化”的ORM实现。

      所谓“半自动”,可能理解上有点生涩。纵观目前主流的ORM,无论Hibernate 还是Apache OJB,都对数据库结构提供了较为完整的封装,提供了从POJO 到数据库表的全套映射机制。程序员往往只需定义好了POJO 到数据库表的映射关系,即可通过Hibernate或者OJB 提供的方法完成持久层操作。程序员甚至不需要对SQL 的熟练掌握,Hibernate/OJB 会根据制定的存储逻辑,自动生成对应的SQL 并调用JDBC 接口加以执行。大多数情况下(特别是对新项目,新系统的开发而言),这样的机制无往不利,大有一统天下的势头。但是,在一些特定的环境下,这种一站式的解决方案却未必灵光。
      在笔者的系统咨询工作过程中,常常遇到以下情况:
            1. 系统的部分或全部数据来自现有数据库,处于安全考虑,只对开发团队提供几条Select SQL(或存储过程)以获取所需数据,具体的表结构不予公开。
            2. 开发规范中要求,所有牵涉到业务逻辑部分的数据库操作,必须在数据库层由存储过程实现。
            3. 系统数据处理量巨大,性能要求极为苛刻,这往往意味着我们必须通过经过高度优化的SQL语句(或存储过程)才能达到系统性能设计指标。

      面对这样的需求,再次举起Hibernate 大刀,却发现刀锋不再锐利,甚至无法使用,奈何?恍惚之际,只好再摸出JDBC 准备拼死一搏……,说得未免有些凄凉,直接使用JDBC进行数据库操作实际上也是不错的选择,只是拖沓的数据库访问代码,乏味的字段读取操作令人厌烦。

      “半自动化”的ibatis,却刚好解决了这个问题。

      这里的“半自动化”,是相对Hibernate等提供了全面的数据库封装机制的“全自动化”ORM 实现而言,“全自动”ORM 实现了POJO 和数据库表之间的映射,以及SQL 的自动生成和执行。而ibatis 的着力点,则在于POJO 与SQL之间的映射关系。也就是说,ibatis并不会为程序员在运行期自动生成SQL 执行。具体的SQL 需要程序员编写,然后通过映射配置文件,将SQL所需的参数,以及返回的结果字段映射到指定POJO。使用ibatis 提供的ORM机制,对业务逻辑实现人员而言,面对的是纯粹的Java对象,这一层与通过Hibernate 实现ORM 而言基本一致,而对于具体的数据操作,Hibernate会自动生成SQL 语句,而ibatis 则要求开发者编写具体的SQL 语句。相对Hibernate等“全自动”ORM机制而言,ibatis 以SQL开发的工作量和数据库移植性上的让步,为系统设计提供了更大的自由空间。作为“全自动”ORM 实现的一种有益补充,ibatis 的出现显得别具意义。

网站:http://ibatis.apache.org/

书籍:《iBATIS 2.0 开发指南》  夏昕