该项目包含的通用模块代码等我有时间一并剥离贡献出来(基于WebSocket的通知引擎,工作流整合模块,自定义表单(http://cxlh.iteye.com/blog/306952),基于RBAC权限设计),最近太忙了,Web项目有一段时间没碰,有点生疏的感觉,主要在忙GQT项目,一套基于桌面开发的框架,详见http://cxlh.iteye.com/blog/2021463,写代码写的有点手酸的感觉。
基于Web的含工作流的项目看起来并不如想象的那么简单,主要需求:
- 灵活定制工作流,并跟踪流程进度;
- 每个Order含有历史轨迹记录,可在历史中查看;
- 工作流的Action灵活,认领任务不一定非要先提取表单,因为很多节点都只有几个动作,直接按钮操作即可;
- 待办事宜列表在不刷新页面情况下也能变动;
项目要求:
- 操作简单高效;
- 权限细节到按钮级别;
- 并发数少,不超过3000个在线用户;
主要可能使用到技术:
- 工作流引擎,我这里选用Activiti5,很灵活好用;
- 权限使用Spring Security,基于标签式管理权限很方便;
- 通知引擎使用WebSocket,基于Flash实时通信,基于socket.io;
- 权限粒度基于经典的RBAC;
- 总体框架Spring MVC+Mybatis;
实现的WebSocket的总体思路:
- WebSocket Server独立于Web项目,Web Server与WebSocket Server之间的局域网通信基于简单的Socket通信,这样这个组件可以完全解耦和通用;
- 当Web项目要Push消息到Client时,通过Web Server的Socket Client向WebSocket Server的Socker Server发送消息,然后WebSocket Server收到消息后解码,广播到所有浏览器;
我们实现的事件通知非常简单,设定全局变量并让浏览器侦听:
var G_WebSocket=false; var EVENT_ORDER_CHANGE_STATUS = "orderChange"; var EVENT_ORDER_CHANGE_AMOUNT = "amountChange"; var EVENT_ORDER_CHANGE_REFUND = "refundChange"; WebSocket.init = function(callbackFunc){ socket = io.connect(connUrl, connOptions); socket.on('connect', function() { G_WebSocket=true; callbackFunc("connect",null); }); socket.on('disconnect', function() { G_WebSocket=false; callbackFunc("disconnect",null); }); socket.on('clientQuit', function(obj){ G_WebSocket=false; callbackFunc("clientQuit",obj); }); socket.on('broadcast', function(obj) { callbackFunc("broadcast",obj); }); };
在需要侦听WebSocket接受Web Server推送消息的地方加上一个函数即可:
WebSocket.init(function(command,jsonObj){ if(command=="broadcast"){ if(jsonObj.e == EVENT_ORDER_CHANGE_STATUS){ //TODO:write your code here }else if(jsonObj.e == EVENT_ORDER_CHANGE_AMOUNT){ //TODO:write your code here }else if(jsonObj.e == EVENT_ORDER_CHANGE_REFUND){ //TODO:write your code here } } });
这样的结构要扩展推送服务很简单,比如按频道推送等,都可以很容易的扩展。
再看看看工作流,我们实现了activiti通用的申请提交任务流程和自定义表单功能,提取跟踪流程图功能等,这样你要设计一个新流程也变得非常简单,只需要在eclipse里划上工作流图,在后台发布,然后通过SpringMVC的RestAPI启动实例流程,申领完成任务等,如下图:
流程走到了分支的两个节点上,这样对后续新增的工作流提供了极大的遍历。
最后说说Spring Security,基于RBAC的权限体系搭建好后(可以用在任何管理系统中),要在页面中访问一个资源,首先判断一下是否有权限,如下HTML:
<sec:authorize ifAllGranted="r_pd"> <a href="#">resource access here</a> </sec:authorize>
<sec:authorize url="/XXX/XXX/XXX.html"> <a href="XXX/XXX/XXX.html'"> <span>XXX功能</span> </a> </sec:authorize>
前台由于项目比较小,没有用到js的MVC框架,如backbone等,这里就不再记录了。
相关推荐
综上所述,基于Web的工作流管理系统的设计与实现涉及多种技术和理论,包括Web开发、工作流管理、数据库设计、业务规则处理以及系统集成等,是一项综合性的工程任务。理解并掌握这些知识点,有助于构建高效、灵活且...
四、Activiti工作流开发 1. 安装与配置:首先,需要在项目中集成Activiti库,并配置数据库连接,以存储流程定义和运行时数据。 2. 流程定义:使用BPMN编辑器(如Eclipse BPMN2插件)创建流程定义模型,然后部署到...
在IT行业中,工作流引擎是一种用于自动化业务流程的软件系统,它可以帮助企业或...结合提供的"基于活动的PHP工作流引擎开发概要.pdf"文档,读者可以深入研究和理解工作流引擎的实现细节,从而更好地应用到实际项目中。
ACTIVITI是一个开源的工作流和业务流程管理(BPM)系统,它基于Java技术,提供了丰富的API和强大的设计工具,使得开发者能够轻松地集成工作流功能到各种企业级应用中。本实例是一个基于ACTIVITI引擎的流程管理系统,...
《疯狂Workflow讲义:基于Activiti的工作流应用开发》是一份深入探讨工作流技术与实践的教程,专注于使用Activiti这一流行的开源工作流引擎。该讲义覆盖了从基础概念到高级应用的全面内容,旨在帮助读者理解并掌握在...
总之,《基于Web技术的工作流管理系统设计与实现》是一个涵盖多方面技术的综合性课题,它不仅涉及到Web开发的基本技能,还涵盖了工作流理论、数据库管理和系统集成等多个领域。通过深入研究和实践,我们可以构建出...
在完全基于JS的工作流开发中,前端开发者承担了更多的职责,他们不仅需要设计用户界面,还需要处理数据的流转、状态的改变以及业务逻辑的执行。这种模式的优点是能够提供更加灵活和快速的响应,因为所有的计算都在...
《疯狂Workflow讲义:基于Activiti的工作流应用开发》内容概括: 本书是一本介绍Java工作流领域的书,以Activiti为核心,内容囊括了多个流行的企业级Java EE框架,全书主要可分为以下几个部分。 第1部分:对...
【Java开发基于Web的定制工作流】 在信息技术领域,Java是一种广泛应用的编程语言,尤其在构建Web应用程序方面占据重要地位。本文《用Java开发基于Web的定制工作流》由周浩华和蔡坚铮共同撰写,探讨了如何利用Java...
### 基于Web Service 的工作流引擎 #### 摘要 工作流技术作为企业经营过程中的关键组成部分,对于实现经营过程的重组与自动化至关重要。随着信息技术的发展,特别是Web Service技术的出现,使得在异构环境下实现...
本项目"基于Java Web工作流管理系统源码.rar"提供了一个完整的流程管理框架,涵盖了从工作流模板创建到流程审批的全部环节,具有高度的实用价值。 1. **工作流模板创建**: 工作流模板是系统的核心组成部分,它...
基于Laravel的工作流系统则是在这个框架基础上构建的一种流程管理工具,它允许用户通过可视化的方式定义、执行和管理业务流程。本文将深入探讨基于Laravel的工作流系统的主要功能及其实现机制。 ### 1. 绘制流程图 ...
标题中的“easyui实现的Activiti工作流引擎web版流程设计器”揭示了本文将要讨论的重点,即如何利用EasyUI框架来构建一个基于Web的流程设计工具,该工具是基于Activiti工作流引擎的。EasyUI是一个轻量级的JavaScript...
【标题】"基于SpringBoot+Vue3快速开发平台、自研工作流引擎源码设计" 涵盖了两个主要的技术栈:后端的Spring Boot框架和前端的Vue.js 3框架,以及自研的工作流引擎。这个项目可能是为了提供一个高效、便捷的开发...
【基于SSH框架的Web项目】是一个综合性的开发实践,它主要使用了Struts2、Spring和Hibernate这三...通过这个项目,开发者不仅能提升技术水平,还能了解到一个完整Web应用的开发流程,为未来的职业发展打下坚实的基础。
在实际项目中,整合Activiti工作流和Web流程设计器可以显著提高业务流程的管理效率,降低维护成本。通过对上述步骤的深入理解和实践,你可以构建出符合业务需求的高效工作流管理系统。而提供的"Activiti整合流程设计...
OA(Office Automation)工作流项目源码是一种基于计算机技术实现企业内部办公自动化系统的设计与开发。这个源码可能包含了从需求分析、系统设计、编码到测试的完整流程,旨在提高工作效率,规范工作流程,实现信息...
### 用Java开发基于Web的定制工作流 #### 摘要 本文旨在探讨如何利用Java语言构建一种基于Web的定制化工作流系统,并通过实际案例进行深入剖析。作者周浩华及其合作伙伴蔡坚铮(来自华南理工大学电脑工程与科学系...
学生可以通过这个项目深入理解Web开发流程,提高实际操作技能。 【项目包含内容】 项目压缩包“loonflow-master”中可能包含了以下内容: 1. **源代码**:Django项目的完整源代码,包括模型、视图、模板和配置文件...