关于工作流的介绍,我再此不进行赘述,网上有很多的资料。对于企业信息化的建设来说,工作流引擎基本上就是核心的业务,想要绕开基本上不可能。根据调研的结果来看,大的方向基本分成两派,一派是自己写流程引擎,对于一般的技术团队来说,这基本上不太可能,当然国内有几家再做,但是目前的使用效果来说,不是很好;另一派,则是集成开源的工作流引擎,就Java而言目前世界上比较认可的有三个项目,activiti、flowable、camunda。当然各有千秋,但就集成的难度来说,个人比较看好camunda,原因很简单,camunda团队是目前为止提供相关插件比较全的项目。
工作流的相比其他项目上手难度高,主要集中在两个问题上,一是流程设计器;二是表单。flowable和camunda是activiti的分支项目。
在流程设计器方面activiti和flowable,官方提供的是web和编辑器插件。这两个方案目前基本上是处于停滞的状态。而camunda提供了一套bpmn-js的插件(有些高手作者,将其适配了flowable和activiti)和一套modeler桌面设计器。这两个东西对于前端不好的小伙伴们来说简直是福音。
看到这里的小伙伴们应该了解了,camunda为了帮助开发者解决流程设计器,实际上是给了两套方案的:
①bpmn-js:bpmn-js: BPMN 2.0 rendering toolkit and web modeler | bpmn.io
②modeler 桌面设计器Download The Camunda BPMN / DMN Process Modeler | Camunda
看了很多关于camunda的项目目前基本上是用的第一种方案,其实我一直在思考为什么官方提供了两套方案,而国内一直使用的是第一套方案,后来自己也试着集成了一下
效果确实还可以,但是这里面有个问题,大家都知道前端“一日十遍”,过几天就出个新的技术,而该方案又与前端高度关联,相关性太强。但对于web比较熟的前端来说,还是比较友好的,并且相关的生态在国内已开始逐步完善:推荐当时集成bpmn-js的教程文章
https://github.com/LinDaiDai/bpmn-chinese-document
https://github.com/miyuesc/bpmn-process-designer
https://github.com/GoldSubmarine/workflow-bpmn-modeler/blob/master/README_CN.md
对于深度定制开发流程设计器来说,bpmn-js目前在国内的生态还是比较好的。
但从长远的角度上来看,个人比较看好,桌面的流程设计器,一方面迁移性比较强。另一方面对于官方的嵌入性较小
对于工作流官方提供的后台来说,大部分开发者直接选择无视或弃用,个人觉得他们可能认为不是很符合国内的需求吧,但对于我而言,既然是集成第三方的项目,其目的就是简化自己的开发,能用第三方的,尽量不要自己去二次再开发。
最后关于api接口,这个地方也不知道为啥,国内的开发者选择无视官方提供的接口,直接自己上手去写,这个地方我比较建议能用官方的尽量用官方的api,一方面可以减少后端的压力,另一方面官方提供的东西相对来说比较稳定;除非有特别的需求,才考虑自己写相关的api接口。
REST API Reference | docs.camunda.org
总结,①流程设计器建议用官方的桌面设计器,有特殊需求的再用bpmn-js;②官方提供的web后端ui保留,一方面减轻自己的开发工作量,另一方面,那个接口不会调直接照着官方的ui,它调用哪个,你就调用哪个就好了,比如发起工作流、获取用户任务等等;③能用官方提供的api就不要自己去写,其实从controller、service官方都提供了,除非你的需求特别特殊才自己写。
关于表单的问题,目前市面上的集成方案,基本上是用的动态表单,但动态表单,最大的问题是跟前端技术绑的太死,一旦升级,就容易暴露问题;此外,它还有个问题就是动态表单的可实现的业务场景很有限,多个前端的业务场景来说基本上是死路一条(举个例子,你有个vue的前端;再来个react前端;再有个flutter的前端),所以不看好动态表单方案。
目前camunda官方也在做这方面的探索,官方目前也是再尝试,动态表单,如下图所示:
除非官方能做到多个技术的适配,估计还有很长的路要走。
个人在探索另外一条路,因为个人集成的项目是给开发者用的,为了保证其灵活性,在尝试使用代码生成器这条路,但是如果小伙伴们你的工作流是给没有开发能力的人用的,那么可能就只能逼得你走动态表单了。
后续会将我集成的方式方法,陆续分享给大家……