这两周与“传智播客”合作,开了一期企业工作流开发的专题课堂。来了一些IT企业的学员,以及“传智播客”本身的一部分学员。
本来四天的课程安排是围绕“概念、模型、系统、引擎构架和实现”这四个方面来阐述的,基本上一天围绕一个层面来展开。至于为什么前三个部分分为“概念、模型、系统”这三个层面,这是受荷兰的Aalst大师所写的《工作流管理——模型、方法、系统》这本的一定影响的,以及以及五年的工作流研发的经验总结出来的一套学习工作流的方法。
为了这四天讲解,准备的很充分。虽然在此之前已经给数十家企业培训过工作流,但是都只是一天的内容量,所以内容要比这此培训的少,也更有针对性。而这次培训的课程设计则是本着:从基础知识到实现一层层展开的。
第一天结合一些流程产品的演示来讲工作流的基本概念、历史、系统结构、参考模型。确发现几乎没有什么学员在意这个,好像每一个学员都觉得这个知识没啥用处——在给大家演示那些工作流产品的绘制流程界面、接受任务提交任务的一些demo之后,询问了大家最关注工作流什么。
几乎所有的人都很好奇:工作流引擎是咋实现的?—— 我很矛盾,没有这些理论基础,你如何能够领悟一个process engine呢?
晚上回到家想了又想,决定第二天改变原定的讲解计划。原本第二天是打算讲解工作流的运转模型、组织模型、权限模型、事件模型、扩展模型,以及非常重要的建模方法和模式。决定换了。
第二天上午先简单过了过运转模型和组织、事件模型。然后开始带着学员们一步步的搭建jbpm开发环境(实际上就是利用jbpm-starters-kit在Eclipse中构建Process Project),从这以时刻起,突然发现所有的学员都有学习兴趣了(神奇的事情)。
接下来的三天课程主要就是带着大家:用jbpm建流程,利用TestCase创建ProcessInstance,并讲解存储结构,分配和处理TaskInstance。后来还花了半天时间讲了讲jbpm Engine Kernel的设计结构、原则和局限性,讲了讲Token的Singal的含义和过程。
我不知道围绕jBpm讲解的这些内容到底能够给学员们带来多大价值,但在我自己看来,除了那个jbpm engine kernel的是有比较大价值以外(毕竟这个是很少有人能知道的),其他的内容,真的不值得这些学员耗费金钱来听。—— 而在于我自己,其实是根本不想围绕jbpm讲这么多的。
我其实是想给学员们普及一套研究和开发工作流的方法,而这个方法肯定是依赖于概念、模型、建模方法的—— 可是,我发现没有人愿意听这个。
很多人开发人员以为,下个jbpm-starters-kit,看看user guide,搞搞扩展开发,就可以去实施工作流了。难道没有人注意,
user guide永远只能告诉你:how to use it,而无法告诉你why and how to design。
不过,说实话,我也很理解这些来自企业的学员们,他们很多是被项目“逼”的,被“成本”逼的。——国人太喜欢使用开源了,struct,spring,hibernate这些都是开源,这些可以用,既然工作流也有开源,为啥不能用呢?
如果有时间,如果你对工作流感兴趣,那么抽空把流程建模方法、调度算法、参考模型等等一些基础知识看看吧。