Shark第一印象- -
试了一下Enhydra Shark工作流引擎,暂时还不知道如何编程使用,只有一些肤浅的印象。
庞大——比OSWorkflow和Werkflow都大了许多,概念非常完整,一时间还很难完全理解这些概念。对于OSWorkflow和Werkflow这种轻量级工作流来说,要管理的唯一目标就是流程实例(process instance),操纵流程实例的状态变迁,至于如何使用流程实例、状态如何发展,都在工作流引擎之外。Shark管理的目标要宽泛得多,比如有User和UserGroup的概念,用户必须有此角色(即group)才能涉足此流程。不知道这会不会和统一用户管理平台冲突。
标准——完全符合WfMC参考模型,并且没有任何额外扩展,采用XPDL作为工作流定义语言。标准是好事,但是对于一些比较特殊的流程,我担心它的扩展能力。比如电子政务中经常会出现一种“无序流程”(只要领导插手,就可以随便到任何位置),WfMC是否能支持呢?另外,Enhydra提供JaWE编辑器,可能是最好的XPDL可视化编辑器。
支持多语言插件——对于需要自动执行的流程,Shark允许插入多种语言的运行单元,包括Java、JavaScript、BeanShell、Python等等,相信提供对Groovy的支持也会很简单。我们自己的工作流不支持自动执行,OSWorkflow只支持简单的BeanShell(语句直接写在配置文件中)。
持久化——默认的持久化方式是DODS,这是Enhydra自己做的一个O/R mapping。原来用的数据库是HSQL,我今天尝试迁移到MySQL还没有成功,因此也不知道这个持久化机制究竟如何。另外还提供LDAP的持久化,持久化方式的移植也不知道是否困难。我相信O/R mapping基础上移植不会太难。
服务接口——可以作为应用程序的一部分在代码级集成,也可以作为外部服务通过RPC集成。Shark很重视CORBA接口,对于异构环境的集成应该是很有帮助的。这里也有一点性能上的顾虑:应用内集成时,工作流引擎和工作流实例会不会带来太大的性能开销?毕竟它给我一种重量级的感觉。
明天如果有空就继续尝试,先把应用内集成搞明白,那么RPC集成也就简单了。