首页 > 代码库 > Activity工作流引擎开发系列
Activity工作流引擎开发系列
Activity工作流引擎开发系列-01
作者:邓家海
没有伞的孩子,只能光脚奔跑!
前言:
初次接触工作流这个概念是自从2014年11月份开始,当时是由于我的毕业设计需要,还记得当时我毕业设计的题目是《基于BS结构模式的工程管理系统设计与实现——工程计划管理》,里面涉及到一个工程管理的审批。正好我当时12月份出来实习,实习所在的公司所做的OA系统普遍也需要工作流,但是公司项目所用的工作流是CCFLOW,这是一个基于C#的国产开源工作流引擎,但是我毕业设计做的是java,所以从2014年的11月开始,我就开始学习Activity。一直到今年的三月份,我终于形成一整个工作流的理论框架。其中有许多启发源自于目前所在公司的项目开发经验。算了一下,就整整学了2年两三个月吧。
工作流有多重要?也不是很重要。看你所在的公司用不用而已。这么说吧,目前我公司的工作流框架,核心部分只有一个人懂得。其他人都不会。试想,如果有一天,这个管理工作流的人要跳槽,那么老板会给他加个4K以上的工资挽留,我估计还是有可能发生的。学习工作流,不仅仅要学习别人的开源框架,还得慢慢的上升到工作流的思想,有那么一天,也许能开发出来自己的工作流引擎。
什么是工作流?
什么是工作流?对于没接触过工作流的人或许觉得很陌生。打个比例吧,假如你要请假,那么请假的时候需要向上级申请。有管理系统的公司请假流程一般使用公司的内部管理系统申请,然后逐级上报审批。这一整个审批过程的控制,就需要工作流来控制了。
如果要使用专业的术语来说,工作流(Workflow),指“业务过程的部分或整体在计算机应用环境下的自动化”。是对工作流程及其各操作步骤之间业务规则的抽象、概括描述。在计算机中,工作流属于计算机支持的协同工作(CSCW)的一部分。后者是普遍地研究一个群体如何在计算机的帮助下实现协同工作的。
工作流主要解决的主要问题是:为了实现某个业务目标,利用计算机在多个参与者之间按某种预定规则自动传递文档、信息或者任务。
工作流概念起源于生产组织和办公自动化领域,是针对日常工作中具有固定程序活动而提出的一个概念,目的是通过将工作分解成定义良好的任务或角色,按照一定的规则和过程来执行这些任务并对其进行监控,达到提高工作效率、更好的控制过程、增强对客户的服务、有效管理业务流程等目的。尽管工作流已经取得了相当的成就,但对工作流的定义还没有能够统一和明确。
Georgakopoulos给出的工作流定义是:工作流是将一组任务组织起来以完成某个经营过程:定义了任务的触发顺序和触发条件,每个任务可以由一个或多个软件系统完成,也可以由一个或一组人完成,还可以由一个或多个人与软件系统协作完成。
1993年工作流管理联盟(Workflow Management Coalition,WfMC)作为工作流管理的标准化组织而成立,标志着工作流技术逐步走向成熟。WfMC对工作流给出定义为:工作流是指一类能够完全自动执行的经营过程,根据一系列过程规则,将文档、信息或任务在不同的执行者之间进行传递与执行。
工作流的主要功能
工作流管理系统(WorkflowManagementSystem,WFMS)是定义、创建、执行工作流的系统。在最高层上,WFMS应能提供以下三个方面的功能支持:
建造功能:对工作流过程及其组成活动定义和建模;
运行控制功能:在运行环境中管理工作流过程,对工作流过程中的活动进行调度;
运行交互功能:指在工作流运行中,WFMS与用户(业务工作的参与者或控制者)及外部应用程序工具交互的功能。
工作流管理系统带来的好处
由于信息技术的发展和日趋激烈的商业竞争,人们不再满足于独立、零散的办公自动化和计算机应用,而是需要综合的、集成化的解决方案。作为一种对常规性事务进行管理、集成的技术,WFMS的出现是必然的。它可以带来以下收益:
1.改进和优化业务流程,提高业务工作效率;
2.实现更好的业务过程控制,提高顾客服务质量;
3.提高业务流程的柔性等。
工作流的应用领域
在后面,我将会把握整合Activity开发的一个过程写一些列的文章。当然时间紧急,写出来的技术文可能比较粗糙,但是主要的是干货,后续我将会慢慢的完善整个系列的修饰。希望对此可以给广大开发者一个宝贵的开发经验。如果条件允许,我将会购买云主机和域名把项目上线给大家参考。
我目前整合的基本框架已经完成,后续还有很多的优化和完善工作要做,但是目前已经能够运行起来。
主要模块:
流程模型
整合Activity流程设计器
部署流程
查看部署流程图
部署操作
待办任务
待办操作
待办流程进度
已办任务
数据库:
待做:挂起,解挂,流程转发,流程查询,流程表单自动化、流程指派、流程追回······
关于源码问题:因为我基于我公司的权限系统项目上面开发的,不方便开源。但是以后如果时间充足我会考虑开源的。为了方便大家学习交流,我建立一个Activity开发群,希望可以共同进步。文章可能有很多不严谨的地方。欢迎批评斧正。
QQ群:634320089
Activity工作流引擎开发系列