jBPM4工作流应用开发指南
首先十分感谢作者给我这个机会在他的作品即将问世之前做一些感想,也正好让我能在忙碌中抽空回顾一下这么多年在技术平台方面走过的路以及在Workflow方面的点点滴滴。因为本书是介绍jBPM的专业书籍,所以我谈不上给些什么评论,只是将对作者的印象和对书中内容引发的一些思考和回味分享给大家。
首先就要从我跟作者如何相识的初次合作谈起了。记得那应该是2005年,我们经历了两年多搭建面向ERP项目的研发平台初具规模,正在10多个大型项目中服务。当时从底层技术框架、代码生成工具、组织权限等诸多技术问题都得到了充分的考虑和解决。当然肯定少不了对Workflow业务的解决。当时我们选用的WfMC的XPDL语法,从引擎、设计器、监控器、模拟器、组织模型全套都实现了。最初因某些项目原因采用的.NET,后迁移到Java平台下,并且以Hibernate做存储,也是采用的微内核和状态机的设计思路。提供了一整套的API(类似jBPM等主流工作流引擎提供的方式)。但在几个大项目实际使用中发现这种纯粹API二次开发的方式,基于封闭工作流系统无法高效地支撑业务快速开发及流程仿真重组。
对业务系统快速实施有价值的是整合了组织定义、流程定义、业务表单定义、业务数据权限定义工具等全集成的定制系统,不用通过编写代码业务需求人员通过拖曳即可完成各种层级集团应用的定义,并适当设置一定的业务脚本即可完成业务系统的定义。所以我们在2005年6月启动了这件事情,基于已有的组织权限、工作流基础上加入业务表单定义及整合的设计定义功能。然后在公司内部到处挖人,我习惯于以技术geek的方式在公司内部到处引诱人,都是先通过非正式的方式从技术角度找到有想法感兴趣的人,然后再用各种手段搞到这个人加入。
记得那个时候一个意气风发、满怀抱负的年轻小伙子给我留下了深刻的印象。他刚刚做完一个电信的项目,爱好非常广泛,JS很好,也会Flash,想法特别多,手特别快。所以我就通过各种手段搞到这个家伙加入我们,那就是年轻时的作者。很快他先搞定了业务表单定义的技术攻关,可能当时我们是最早使用XmlHttpRequest的(Ajax的核心),然后基于Workflow如何接收表单传递过来的数据,然后接手了整个Workflow的优化及实现各种变态的中国特色的工作流需求。我们在10月左右发布了一个完整的版本,支持了上面讲到的那些功能。现在回头看看大家都很神奇,10个人不到3个月就搞定了这么复杂的东西,也许换到今天开源技术如此成熟可能都未必能做到。之后这个家伙就一定要坚持在专业上坚持以Workflow为方向不断成为专家。
再一晃就是多年以后的事情了,我也从搭建ERP研发平台到互联网SNS大型数据平台又转回到专属行业ERP产品平台。不论管理大型团队多少年,始终秉承着对技术的痴迷,从未放弃对任何技术细节的关注,也越来越推崇中庸、推崇妥协。
这期间我们有过断断续续的联系,也曾经为一些点子一起疯狂、一起兴奋,不过终究没有找到合适的机会再次合作。收到作者的邀请时,十分地受宠若惊,当时手头的事情也特别多。而且类似的书我也见得特别多,不外乎就是英翻中,所以就根本没放在心上。直到后来拿到作品仔细阅读了一番,渐渐地能体会和重现这个家伙几年的历程——一直在专业(Workflow)的道路上滋滋以求。
当然文中难免有大量资料的复制,但是能花大量心血组织起来,如此翔实全面地介绍已实属不易。而且加上了这家伙从当年我们一起做流程系统时的经验和他在jBPM系列产品应用实施上多年的咨询经历。
最近我也在平台中的多处集成了jBPM用于解决传统审批流,跨业务域集成BPM,以及ETL流等,当然不会孤立使用Workflow,肯定是结合ESB、MDA、规则引擎等一起使用。一直想给大家从概念到Workflow的历史、再到如何运用jBPM解决各种问题等进行一个全面的讲解,正好拿到这本书,省了我很大的力气。
这几年IT业内浮躁风气、快餐文化盛行,用过Spring、Struts、jBPM就敢说自己是架构师。而很少有人能够踏踏实实潜心研究各种技术的根源,为什么要这么设计,如何扩展更为有效。从我们做平台的人的角度来看简单会用没什么,关键是能理解精髓并扩展或改造才是本事。
像作者这样致力于在国内传播Workflow的模型,让更多的人少走弯路,快速上手,并不断将多年研究的心得和成果同大家分享的人太少了,国内太少这种人了。也许这本书可以为不少人提供了解jBPM的素食套餐。尤其本书中“第20章 中国特色工作流的jBPM实现”十分具有实战意义,是特别值得国内使用jBPM做应用的人们参考的最佳实践。
笔触于此,抬眼已很晚了,一气呵成就先写这么多。让我们一起读完全书后再回来一起思考和回味下面这两个问题吧!
l 有想法、专注、愿意分享的年轻人,我们应该有怎样的IT人生?
l 业内规范的演化进步,我们又会遭遇怎样的IT进程?
jBPM4工作流应用开发指南的更多相关文章
- 企业门户(Portal)项目实施方略与开发指南
<企业门户(Portal)项目实施方略与开发指南> 基本信息 作者: 郑文平 丛书名: 企业大型应用集成丛书 出版社:电子工业出版社 ISBN:9787121211843 上架时间: ...
- 免费下载获取Odoo中文开发 指南 手册
引言 Odoo是一个强大的商业应用开源平台.在此基础上,构建了一套紧密集成的应用程序,涵盖了从CRM到销售到股票和会计的所有业务领域.Odoo有一个动态和不断增长的社区,不断增加功能.连接器和其他商业 ...
- ASP.NET Aries 开源开发框架:开发指南(一)
前言: 上周开源了Aries开发框架后,好多朋友都Download了源码,在运行过程里,有一些共性的问题会问到. 所以本篇打算写一下简单的开发指南,照顾一下不是太看的懂源码的同学,同时也会讲解一下框架 ...
- FreeMarker模板开发指南知识点梳理
freemarker是什么? 有什么用? 怎么用? (问得好,这些都是我想知道的问题) freemarker是什么? FreeMarker 是一款 模板引擎: 即一种基于模板和要改变的数据, 并用来生 ...
- Jetty使用教程(四:21-22)—Jetty开发指南
二十一.嵌入式开发 21.1 Jetty嵌入式开发HelloWorld 本章节将提供一些教程,通过Jetty API快速开发嵌入式代码 21.1.1 下载Jetty的jar包 Jetty目前已经把所有 ...
- JVM 平台上的各种语言的开发指南
JVM 平台上的各种语言的开发指南 为什么我们需要如此多的JVM语言? 在2013年你可以有50中JVM语言的选择来用于你的下一个项目.尽管你可以说出一大打的名字,你会准备为你的下一个项目选择一种新的 ...
- iOS原生地图开发指南续——大头针与自定义标注
iOS原生地图开发指南续——大头针与自定义标注 出自:http://www.sxt.cn/info-6042-u-7372.html 在上一篇博客中http://my.oschina.net/u/23 ...
- Angularjs中文版本开发指南发布
从本人开始在写关于Angularjs的文章开始,也算是见证了Angularjs在国内慢慢的火起来,如今的Angularjs正式如日中天.想知道为什么Angularjs会这么火,请移步angularjs ...
- nodejs开发指南读后感
nodejs开发指南读后感 阅读目录 使用nodejs创建http服务器; supervisor的使用及nodejs常见的调式代码命令了解; 了解Node核心模块; ejs模板引擎 Express 理 ...
随机推荐
- (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 通用的星星类已经完成了,下面我们来实现具体的变长和缩短道具. 变 ...
- ROS_Kinetic_20 ROS基础补充
ROS_Kinetic_20 ROS基础补充 1 手动创建ROS功能包 参考官网:http://wiki.ros.org/cn/ROS/Tutorials/Creating%20a%20Package ...
- UNIX网络编程——并发服务器(TCP)
在迭代服务器中,服务器只能处理一个客户端的请求,如何同时服务多个客户端呢?在未讲到select/poll/epoll等高级IO之前,比较老土的办法是使用fork来实现. 网络服务器通常用fork来同时 ...
- 【unix网络编程第三版】阅读笔记(二):套接字编程简介
unp第二章主要将了TCP和UDP的简介,这些在<TCP/IP详解>和<计算机网络>等书中有很多细致的讲解,可以参考本人的这篇博客[计算机网络 第五版]阅读笔记之五:运输层,这 ...
- 【翻译】使用Sencha Ext JS创建美丽的图画(1)
原文:Creating Beautiful Drawings Using Sencha Ext JS – Part 1 许多人可能对Ext JS中的图表包相当熟悉了.通过它可以快速创建相当强悍的可视化 ...
- SpriteBuilder中节点位置类型为百分比时不能定位的解决
Ball.ccb类型是Node,其中有个子节点为Color Node,其中物理使能. MainScene.ccb中加入一个物理节点,将Ball.ccb拖入其中,成为该物理节点的孩子,这时出现了一个&q ...
- 类模板语法知识体系梳理(包含大量常犯错误demo,尤其滥用友元函数的错误)
demo 1 #include <iostream> #include <cstdio> using namespace std; //template <typenam ...
- python模块:调用系统命令模块subprocess等
http://blog.csdn.net/pipisorry/article/details/46972171 Python经常被称作"胶水语言",因为它能够轻易地操作其他程序,轻 ...
- React Native之携程Moles框架
因为支持用javascript开发原生应用,React Native一推出就受到不少公司热捧,各家都跃跃欲试.但有一个痛点是,在移动端,我们是否有必要开发多套程序:iOS.Android和H5?本次将 ...
- Java-HttpServletRequest
//继承了ServletRequest接口,给servlet提供Request请求信息,servlet 容器会创建以后HttpServletRequest对象 //并把它作为一个参数给service函 ...