工作流引擎设计思路

 

       自开博以来不断有朋友来探讨工作流引擎该如何设计、工作流的数据库如何设计、应用筐架如何搭建等,这些问题其实都是很难有答案的。开发设计一个工作流引擎是要能够帮助客户营造价值,而不是为了一时兴趣实现某些技术特性。工作流管理联盟(Workflow Management Coalition, WfMC)早已定义了工作流技术的标准体系,但并未指明具体实现的方法。工作流引擎在实现方法上可以基于不同的软件技术架构,引擎本身应该是与具体业务无关的,但又需要考虑各类应用领域,工作流引擎设计的重点应该是有一定差异的,但无论基于什么架构,无论基于哪个领域,有些原理是相通的。

主要是以下方面

一、易用性原理

工作流引擎在多数应用中是由客户或实施人员来设计相关业务流程,因此易用性相当重要,有些工作流引擎的设置器,在设计流程时按照代码语言的语法,或其它技术化强的术语去设置,让人不知道如何开始,也不太容易明白相关设置的具体意义。

因此要求图形化视觉效果,包括流程设计时的图形化和流程应用时的图形化。设计时的图形化以拖拉的方式就能去设置流程,应用时图形化让用户非常直观的感觉到流程运作情况;也要求操作便利,提供鼠标单双击、键盘快捷方式、工具栏、流程导入导出、打印、节点导航、流程复制粘贴、流程校验等等功能方便用户快速设置流程

 

二、功能完整性原理

        工作流引擎必须支持各种流程特性,包括串行流程、并行流程(分流合流)、子流程、条件路径、条件人员、环节信息权限设置、普通环节、机构环节、会签环节等等,这里就不一一列举了。既然提供用户在代码外定义流程,那么流程定义工具就要求能够支撑到所有流程特性。

 

三、数据完整性原理

       工作流本身对于业务系统而言,其作用是隐藏在背后,业务系统包括大量的业务处理数据,工作流引擎本身也有数据的处理,如何保证业务数据和流程数据的事务完整性?如何设计才能保证业务数据与流程数据的关联完整性?流程是自定义的情况下,业务数据如何统计?这些都是设计工作流引擎及工作流应用框架时必须解决的。

 

四、伸缩性原理

       设想一个企业应用,如果公司只几十个人,又在一个办公室,工作流应用的价值不是很大,真正有价值的工作流应用是在集团公司大量烦琐的事件处理,如省级邮政的OA系统,15000的用户量,跨各个地市的不同流程模式。还有就是大的业务处理量,处理环节涉及多个职能部门,流程引擎协调和处理这些部门和人员之间的工作等,这些应用场景均是大处理量,流程跨越大,而且业务流程本身会有调整,会有不同组织结构层次复用同一流程模式的需求,因此在处理能力上需要有伸缩性,流程设置上也需要有伸缩性。

 

五、扩展性原理

       工作流引擎设置工具能包括各种特殊权限的支撑,如交接、跳转、自动处理、终止流程、自定义时限等等,企业在某些特殊情况下应用流程时不一定需要按照流程设置去运作,流程设置工具能扩展特殊权限的功能去实现这样一些特殊要求。

       工作流应用框架能够支撑业务上的扩展,如与财务系统集成、ERP集成、消息平台的集成、SPS的集成、INFOPATH的集成等。

 

六、接口原理

       其实接口是工作流引擎的关键,也是面向对象设计与分析的关键,工作流应用筐架只需做“我要做什么”,工作流引擎返回结果,内部“我怎么做”,是不需要搅在一块的。关键接口包括:启动、发送、回收、退回、消息通知、结束等等,当然实际业务需求中的接口需求远不止这些。

 

七、可行性原理

      现在工作流技术非常流行,很多朋友希望能开发自己的工作流引擎,如果要自己开发,其实可以先考虑以下几个问题。

1、 经济的可行性:工作流引擎是需要能帮助客户创造价值才有前途的,如果我们自行开发的工作流引擎给客户带来多大价值,获得多少回报,对比付出的成本及浪费的机会成本,收益如何?有得赚再自己做。

2、 技术可行性:工作流引擎设计并不复杂,关键是稳定、成熟的过程中,其它技术都在发展,工作流引擎需要集成的技术甚至解决方案的思想也在进步,工作流引擎能否与时俱进?盘算一下,如果有把握再自己做。

3、 时间的可行性:工作流引擎本身对客户来说没有价值,但可以降低应用开发的成本。具体的企业应用需要工作流引擎时,是否在规定的工期内能够提供一个稳定可靠的工作流引擎去实现具体应用?计划一下,来得及再自己做。

 

 

        我们是深圳非凡信息技术有限公司研发中心,从01年开始研发工作流的第一个版本,工作流引擎经历了6年的风风雨雨,在邮政、地产、物流、IT服务等各个领域均有成功案例,工作流引擎也已日渐成熟,希望能跟大家有合作机会,谢谢大家。

   QQ: 576212694 8608297 请注明:工作流

   MSN: gcy0377$hotmail.com cancanwyq$hotmail.com

   欢迎访问我们的网站:http://***


 

### Java 工作流引擎设计思路及实现方案 Java 工作流引擎的核心目标是通过抽象和封装业务流程,使开发者能够更高效地管理和自动化复杂的业务逻辑。以下是关于工作流引擎设计思路和实现方法的具体探讨。 --- #### 1. **核心设计理念** - **状态驱动**:工作流本质上是一个状态机,其中每个任务或活动都可以视为一个状态[^3]。通过定义清晰的状态转换规则,可以有效描述业务流程的流转路径。 - **模块化结构**:为了增强可维护性和扩展性,通常将工作流划分为多个独立的子模块,例如: - **节点定义**:表示具体的业务动作或任务。 - **执行上下文**:保存当前流程实例的相关数据和变量。 - **调度平台**:负责协调不同节点之间的顺序执行。 - **事件监听器**:捕获并响应流程中的重要事件(如开始、结束、异常等)。 - **动态配置**:现代工作流引擎强调灵活性,允许用户在运行时修改流程定义而无需重启系统[^4]。这可以通过引入 JSON 或 YAML 文件作为外部配置文件来实现。 --- #### 2. **关键技术选型** ##### (1)后端框架 - **Spring Framework**:提供依赖注入、事务管理等功能,简化了复杂组件间的协作[^1]。 - **MyBatis**:作为一种 ORM 框架,它可以帮助我们将 SQL 查询语句与对象模型绑定起来,从而轻松访问数据库中的流程元数据。 ##### (2)持久化层 - 数据库设计至关重要,主要包括以下几个方面: - **流程定义表**:存储预设好的流程模板信息。 - **实例记录表**:追踪正在运行或者已完成的各个流程实例。 - **日志审计表**:保留每次状态变更的历史痕迹以便后续查询分析。 ##### (3)构建工具 - 使用 Maven 来统一管理项目依赖项,并制定标准化的编译打包流程[^1]。 --- #### 3. **主要功能模块** ##### (1)流程解析器 该模块的主要职责是从指定格式(比如 BPMN XML)加载流程定义,并将其转化为内部可用的数据结构形式。在此过程中还需要校验语法合法性以及参数完整性。 ```java public class BpmnParser { public WorkflowDefinition parse(String bpmnXmlContent) throws ParseException { // 实际解析逻辑省略... return new WorkflowDefinition(); } } ``` ##### (2)任务分配策略 根据不同角色权限自动指派待办事项给相关人员。此部分可能涉及 LDAP/AD 集成以获取最新的组织架构信息。 ##### (3)通知提醒机制 当某个环节超期未完成时触发邮件/SMS等形式的通知消息提示责任人尽快处理。 ##### (4)统计报表生成 定期汇总各项指标数据绘制图表展示整体运营状况趋势变化情况。 --- #### 4. **典型应用场景下的实现细节** 假设我们要开发一套审批类 OA 系统,则可以从如下几个角度切入: - **初始页面渲染**:利用前端框架 Vue.js 展示可视化编辑界面让用户拖拽组建拼接出理想的审批链条; - **后台接口对接**:编写 Restful Api 控制器接收客户端提交过来的新建请求并将之存入对应队列等待下一步操作; - **异步回调处理**:每当上级领导同意之后立即告知下一位审核者继续往下推进直至最终归档结案为止; --- #### 5. **挑战与应对措施** 尽管采用成熟的第三方库能快速搭建原型验证概念可行性,但在面对高度定制化需求时常面临诸多难题,诸如性能瓶颈、兼容性冲突等问题亟待解决。因此建议采取渐进式的演进路线逐步完善产品形态。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值