camunda系列教程1(集成思路)关于工作流的介绍,我再此不进行赘述,网上有很多的资料。对于企业信息化的建设来说,工作流引擎基本上就是核心的业务,想要绕开基本上不可能。根据调研的结果来看,大的方向

本文讨论了企业在选择工作流引擎时的两种路线:自建和集成开源。重点介绍了camunda的优势,特别是其BPMN-js和modeler桌面设计器,以及建议使用官方提供的API接口以降低开发复杂性和提高稳定性。作者还指出动态表单方案存在的局限性并探讨了未来可能的发展方向。
摘要由CSDN通过智能技术生成

关于工作流的介绍,我再此不进行赘述,网上有很多的资料。对于企业信息化的建设来说,工作流引擎基本上就是核心的业务,想要绕开基本上不可能。根据调研的结果来看,大的方向基本分成两派,一派是自己写流程引擎,对于一般的技术团队来说,这基本上不太可能,当然国内有几家再做,但是目前的使用效果来说,不是很好;另一派,则是集成开源的工作流引擎,就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官方也在做这方面的探索,官方目前也是再尝试,动态表单,如下图所示:

 除非官方能做到多个技术的适配,估计还有很长的路要走。

个人在探索另外一条路,因为个人集成的项目是给开发者用的,为了保证其灵活性,在尝试使用代码生成器这条路,但是如果小伙伴们你的工作流是给没有开发能力的人用的,那么可能就只能逼得你走动态表单了。

  • 19
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,那我可以给你讲解一下使用 Pandas 对表格数据进行处理的基本步骤,同时提供一些示例代码供你参考。 1. 导入 Pandas 库 在 Python 中导入 Pandas 库,代码如下: ```python import pandas as pd ``` 2. 读取数据文件 使用 Pandas 库中的 `read_csv()` 函数来读取数据文件,代码如下: ```python data = pd.read_csv("data.csv") ``` 其中,`data.csv` 是你的数据文件名称,可以根据实际情况修改。 3. 观察数据 使用 Pandas 库中的 `head()` 函数来查看数据文件的前几行,代码如下: ```python print(data.head()) ``` 也可以使用 `info()` 函数来查看数据文件的基本信息,代码如下: ```python print(data.info()) ``` 4. 处理缺失值 使用 Pandas 库中的 `fillna()` 函数来处理缺失值,代码如下: ```python data.fillna(0, inplace=True) ``` 其中,`fillna()` 函数中的参数 `0` 表示将缺失值填充为 0,`inplace=True` 表示填充后直接修改原始数据。 5. 处理重复值 使用 Pandas 库中的 `drop_duplicates()` 函数来处理重复值,代码如下: ```python data.drop_duplicates(inplace=True) ``` 其中,`drop_duplicates()` 函数中的参数 `inplace=True` 表示删除重复值后直接修改原始数据。 6. 分割数据 使用 Pandas 库中的 `train_test_split()` 函数来分割数据,代码如下: ```python from sklearn.model_selection import train_test_split X = data.iloc[:, :-1] y = data.iloc[:, -1] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) ``` 其中,`iloc()` 函数用于选取数据的行和列,`test_size=0.2` 表示将数据分成 80% 的训练集和 20% 的测试集,`random_state=42` 表示设定随机种子,以确保每次分割的结果相同。 7. 特征工程 使用 Pandas 库中的一些函数来进行特征工程,例如: - `get_dummies()` 函数用于将分类变量转换为二元变量; - `apply()` 函数用于对数据进行自定义的转换操作; - `map()` 函数用于将数据映射为其他值。 8. 训练模型 使用机器学习算法或深度学习框架来训练模型。这里不再赘述。 以上是使用 Pandas 对表格数据进行处理的基本步骤和示例代码,希望对你有所帮助。如果你有更具体的问题或需求,可以进一步提出,我会尽力回答。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值