关于工作流引擎的设计讨论

简介:
说点我个人看法哈,一家之言,不一定准确,欢迎批评。 
这个调度,我的理解还是根据一定的权限规则,以及流程定义,把工作流的报文按顺序传递给相关人员审阅,并兼顾异常事件查询等工作。 
我觉得简单来说,就是根本不设计,系统不够大的时候,流程很简单的,数据库中一个顺序表就好了,server检索表,将文档按顺序走一遍就好了。 
不过复杂来说,系统够大,流程够多,还是需要一点设计的,不过,这个设计,从开发角度上讲,最多是提供用户二次修改流程的手段而已,因为程序员永远没有办法替用户规定流程的。因此,还是不要设计,仅仅是把系统做活点,让用户可以自己规定流程就好了,比如前例,将表的修改权发放给某个管理员,或者做个界面,让管理员可以修改流程就好了。 
当然,如果流程较为复杂,状态够多,仅仅利用表保存信令实现数据驱动,可能不好处理。另外,出于某些商业考虑,可能不希望用户自行掌握流程的制造方法,那就变成一次生意了,呵呵。 
那也简单,server端规定一套流程录入的api,规定以某个脚本语言(如php)来书写流程模块,任何时候改流程,则请程序员按照api重新写一套流程代码就好了。 
当然,出于降低维护成本起见,这个修订最好可以是远程的,这就用到npi了,就是规定一套网络接口,可以远程把流程模块登录到server上,server下次业务自动启用。 
我想,只要能做到这几部,其实流程具体怎么规定,让用户去挠头吧,我们不要管,也管不好。 
嗯,至于说到调度算法,可能有时候还有个效率考量,这个问题,我认为根本不是问题,server基于apache+mysql开发,使用脚本语言驱动,一般几千人的公司,都使用ie访问,应该不慢的。没必要为这个点单独做优化,实在要优化,也不要做程序优化,mysql里面建立几个事务,做几个index,可能效果更好。 
有点类似游戏界里面的游戏控制脚本。 
先做什么,满足什么条件,然后哪个场景上出现什么情况。 
也可以乱序,场景仅仅检查n个条件是否满足,不关心满足顺序,这在RPG中比较常见。 

用脚本语言是个不错的选择。

本文转自  tonyxiaohome  51CTO博客,原文链接: http://blog.51cto.com/tonyxiaohome/198466,如需转载请自行联系原作者

相关文章
|
6月前
|
设计模式 监控 算法
【领域驱动设计专题】一文带领你透视DDD领域驱动模型的本质和设计原理分析指南(通用语言体系)
【领域驱动设计专题】一文带领你透视DDD领域驱动模型的本质和设计原理分析指南(通用语言体系)
148 2
|
6月前
|
敏捷开发 监控 架构师
【领域驱动设计专题】一文带领你透视DDD领域驱动模型的本质和设计原理分析指南(构建领域知识)
【领域驱动设计专题】一文带领你透视DDD领域驱动模型的本质和设计原理分析指南(构建领域知识)
189 0
|
5月前
|
监控 Kubernetes 测试技术
概括模型开发部署流程
**模型部署流程概览:**训练完成的大型语言模型经验证评估,进行剪枝量化后导出为标准格式。封装成API,部署到云服务器,考虑GPU资源与安全。通过Docker或Kubernetes管理,集成后端服务,确保负载均衡和安全。监控性能,执行A/B测试和灰度发布,持续优化与维护。每个步骤涉及团队协作与线上稳定性。
62 1
|
6月前
|
运维 前端开发 JavaScript
平台设计-概念澄清说明
平台所说模块一般指一个独立部署的前端项目
|
存储 架构师 安全
【企业架构框架】如何使用新的 TOGAF 版本 10
【企业架构框架】如何使用新的 TOGAF 版本 10
架构:第九章:架构设计(为什么要这么设计,解决了什么问题)
架构:第九章:架构设计(为什么要这么设计,解决了什么问题)
146 0
|
小程序 前端开发 Java
DDD实战之三:整体工作框架和全局需求分析(上)
DDD实战之三:整体工作框架和全局需求分析(上)
DDD实战之三:整体工作框架和全局需求分析(上)
|
供应链 小程序 安全
DDD实战之三:整体工作框架和全局需求分析(下)
DDD实战之三:整体工作框架和全局需求分析(下)
DDD实战之三:整体工作框架和全局需求分析(下)
|
存储 Java 网络性能优化
分布式设计要点 | 学习笔记
快速学习分布式设计要点
|
架构师 Java 程序员
Java面向对象实践--开发团队调度软件(一)
Java面向对象实践--开发团队调度软件(一)
241 0
Java面向对象实践--开发团队调度软件(一)
下一篇
无影云桌面