利用django打造自己的工作流平台(一):从EXCEL到流程化运作

  因工作所需以及管理个人一些日常事项,自己基于django(一个基于python的web框架,详细介绍可查阅相关资料)开发了一个简易的工作流平台[平台地址]。本文首先简要介绍工作流平台的设计思想及其在项目开发中的应用案例,代码层面的细节介绍后续有时间继续补充。

  1.工作流平台在日常工作中的设计思想: 

  如果你是一名软件研发类工作的从业者(开发、测试等),设想一下早期在没有问题单系统的时候是怎样处理软件问题的:使用一份excel表格记录问题,如图1所示:用户A在系统日常使用或者测试过程中遇到问题,需要将问题的关键信息(概要,详细描述,环境配置,触发步骤等)整理到EXCEL表格中。再通过电子邮件把表格发送给开发人员B。B可能同时有几个问题要处理,在接收到的问题中添加一些列用于记录问题状态信息(当前状态;解决时间;问题处理人等)。

图1.问题记录表格示例

  用excel记录和传递问题信息的弊端:
  1.处理闭环的不确定性:发送给开发人员B的问题邮件可能被淹没在他的大量邮件中,无法确保问题一定被解决;
  2.效率问题:通过邮件流转问题处理信息效率太低。尤其人员较多时,人手一份EXCEL的副本,进行信息同步带来很高的沟通成本。

  为了解决上述两个问题,诞生了专用于问题处理的问题单系统,其实质是web化的excel:图1中的每一行对应为一个问题单,每一列对应问题单的一个字段。其中有两个字段较为特殊:"问题处理人"和 "当前状态",WEB后端利用"问题处理人"字段与当前登录用户X进行匹配,把过滤出相匹配的问题并显示在界面上,就是需要用户X处理的问题。另外WEB后端预设有问题处理流程,根据"当前状态"字段决定接下来的处理:比如问题处于"待处理"状态,则下一步可以通过编辑问题单处理问题;如果问题单处于"已解决"状态,则表示该问题已完成处理归档,不能再进行处理了。

  问题单系统优势在于通过固化字段、流程以及某些流转条件(比如设计xx字段为必填项),首先保证了问题处理的闭环,同时最大程度减少了问题流转到下个环节信息不足的情况;解决了多个环节间信息流通,多人协作的效率问题。

  其不足在于字段和处理流程固化导致功能单一,只能用于问题处理跟踪,扩展性差。再审视一下问题单系统的实质:问题单系统实际是将一份EXCEL WEB化并使用固定的流程进行处理。我们把问题单系统视为一种特例,特例一般化(将多份EXCEL WEB化,每份EXCEL使用其给定的流程进行处理)就可以打造可定制字段、流程的工作流平台,用于部门团队的事务管理和知识积累。

  工作流平台的架构非常简单,采用自底向上的设计,步骤如下:

  1.为一种事务(问题处理、请假审批等)定制字段和流程;

  2.把一种事务的字段和流程封装成一个项目。

  3.把多个项目封装成项目群。

  工作流平台的基本架构如图2所示:  

图2:工作流平台的基本架构

  理解了上述架构,不难看出工作流平台的核心就是两张表:数据表和状态转换表。数据表决定显示哪些内容,数据表字段决定如何显示(比如从数据表过滤出“当前处理人字段”等于当前登录用户名的数据显示在界面)。转换表决定每个问题的处理流程,每个项目都有一组State1xStim1>State2格式的描述,表示State1状态下收到Stim1激励跳转到State2状态,这组转换描述确定了项目的处理流程。State1xStim1>State2格式的描述的具体实现形式可以自由定义,下图是一个示例:

图3:状态转换描述表

图4:状态转换描述表对应的流程图

  图3是状态转换描述的一种实现示例,其对应的流程图如图4所示。图3中‘source‘表示源状态;‘trigger‘表示触发事件,对应界面上的按钮; ‘dest‘表示目标状态;‘trans_condition‘表示完成状态转换需要满足的条件;‘trans_action‘表示状态转换时需要执行的操作。状态转换描述表由状态机引擎解析,这样每个项目只要定义自己的状态转换描述表就可以确定项目对应的事务处理流程。

  平台采用三级的页面结构,按层级关系分为项目群首页、单个项目主页和具体问题单页面。

  首页列出了每个项目的项目名称,该项目下分配给当前账号的待处理问题个数等 信息,此外还可以管理项目,创建项目下的问题,以及注册为特定项目的用户等,如图5所示。

图5.项目群首页

  项目群主页上点击项目名称可以进入具体的项目主页;项目主页中列出了分配给当前用户的待处理条目,以及当前用户的监视条目,如图6所示。所谓监视条目就是 其他人在处理,但是当前用户比较关心的问题;比如某重大问题由人员 A 处理并使用该系统进行跟踪,并将最新的处理进展更新到系统中的问题单里,A 的直接主管可以监视该问题单以及时了解问题的最新进展,避免了各种汇报带来的整理材料和沟通成本; 若某重大问题的关键阶段已处理完成,只有一些琐碎的收尾工作,则主管可以随时取消监视问题,交由 A 处理即可。项目首页的右半部分画出了当前项目的处理流程,该流程图根据项目的状态转换表自动生成。

图6.具体的项目主页

  项目主页点击问题概要可进入具体问题单页面,其左半部分是问题单字段信息,上方有监视问题和取消监视两个按钮用于监 视和取消监视该问题(监视功能介绍见上文);右半部分是问题单的管理信息,包括创建时间、创建人、当前处理人、当前状态等,如图7所示。问题单当前状态下所能执行的操作由项目流程定义,比如在” 维护人员处理” 状态下所能执行的操作是” 更新进展” 和” 提交审核”,前者只更新字段信息,后者将问题处理结果提交给维护代表审核,分别对应问题单界面下方的两个按钮。

图7.具体问题单页面

  2.工作流平台在日常工作中的应用示例:

  团队项目开发过程中涉及下列事务:

  1. 测试问题跟踪
  2. 代码检视记录;
  3. 版本发布记录;
  4. 各种汇报材料管理
  5. 调试设备信息、编码注意事项等杂事记录

  上述事务中有些需要归档记录以便随时查阅,比如版本发布记录、编码规范、代码检视记录以及调试设备信息、相关人员联系方式之类杂项记录等;有些只需要完成处理即可,比如分解的子功能点开发、测试过程中遇到的一般问题等。这些事务如果没有统一的平台进行管理,多名开发之间的协作,开发、测试、项目管理等不同角色之间的沟通,上下级间的汇报等都会带来很高的沟通成本。

  为此在工作流平台中创建了三个项目:

  1. 任务跟踪:用于跟踪从需求分解出的子功能点开发、测试过程中遇到的一般问题等,处理完后即可关闭,不再显示在界面上。
  2. 开发记录:用于记录调试设备信息、相关人员联系方式之类杂项记录等,不要关闭,一直显示在界面上用于相关人员查阅。
  3. 代码走查:用于归档代码走查记录。

  这三个新增项目的三级页面结构见图8-14。

图8.项目群首页最后添加三个项目

图9.任务跟踪项目主页

图10.任务跟踪项目的具体问题

图11.开发记录项目主页

图12.开发记录项目中的具体问题

图13.代码走查项目主页

图14.代码走查项目中的具体问题

  此外,平台中每个项目都支持权限管理,平台中数据与EXCEL之间导入、导出等,如下图。还有的项目支持绘图,详见https://www.cnblogs.com/leituhaomo/p/11784600.html

图15.代码走查项目导出到表格的问题

  除用于项目管理外,工作流平台还可以拓展其他方面的应用,如问政反馈、扫码点餐、请假审批、物流信息跟踪等。

原文地址:https://www.cnblogs.com/leituhaomo/p/12243487.html

时间: 2024-08-24 20:59:27

利用django打造自己的工作流平台(一):从EXCEL到流程化运作的相关文章

利用django打造自己的工作流平台(二):疫情统计系统

相关文章: 利用django打造自己的工作流平台(一):从EXCEL到流程化运作 本文是“利用django打造自己的工作流平台”系列文章的第二篇,在自己开发的工作流平台中添加了一个用于排查统计可能受感染人员的项目,可用于公司.部门对员工以及各行政单位对辖区内的人员进行受感染情况的跟踪和统计,为疫情防控贡献一点力量.演示试用地址[点击此处],两个试用账号/密码为:testuser1/testuser1, testuser2/testuser2. 对人员的排查流程如下图1所示: 图1.可能受感染人员

利用django打造自己的工作流平台(三):团队成员任务跟踪系统

近期受疫情影响公司食堂不开放,为解决同事们的吃饭问题,部门需要在每周五统计下周的订餐情况:员工根据个人意愿选择是否从公司订下周的午餐和晚餐,一旦确定一周保持不变. 通常要完成一次部门内员工的订餐信息收集需要经过以下步骤: 1.部门负责人通知各小组接口人收集组员订餐信息: 2.各小组接口人通知组员反馈订餐信息,每个小组收集信息形式各异,如通过QQ留言.微信接龙等方式进行反馈: 3.各小组接口人汇总组员的订餐信息反馈给部门负责人: 4.部门负责人汇总各个小组的数据形成总表,并将总表截图反馈到工作群并

怎样利用App打造自明星实现自盈利

1.了解各个概念 为了大家都能看懂这篇文章,先说明几个概念. App(Application):能够在移动设备上使用,满足人们咨询.购物.社交.娱乐.搜索等需求的一切应用程序. 自媒体:说白了,媒体就是一个传播渠道,传播思想也好,传播信息也罢,总之是一个渠道. 自明星:个人通过自媒体成为让大众熟知的某个领域的名人. 自盈利:就是个人通过自媒体.自明星.自电商达到盈利的目的. 从App的定义中,我们知道App不不过一个渠道,还能做非常多其它事情.那么,利用App来搭建自媒体平台,应该是顺理成章的事

如何利用App打造自明星实现自盈利

1.了解各个概念 为了大家都能看懂这篇文章,先说明几个概念. App(Application):可以在移动设备上使用,满足人们咨询.购物.社交.娱乐.搜索等需求的一切应用程序. 自媒体:说白了,媒体就是一个传播渠道,传播思想也好,传播信息也罢,总之是一个渠道. 自明星:个人通过自媒体成为让大众熟知的某个领域的名人. 自盈利:就是个人通过自媒体.自明星.自电商达到盈利的目的. 从App的定义中,我们知道App不仅仅是一个渠道,还能做很多其他事情.那么,利用App来搭建自媒体平台,应该是顺理成章的事

打造企业级PAAS云平台--不容忽视的几个关键问题与挑战

导语:2017年是中国云计算的转折之年,中国企业争相上云的热度空前高涨.2017年4月,×××信息化和软件服务业司发布了<云计算发展三年行动计划(2017-2019年)>,将发展云计算提高到国家战略层次并提出到2019年我国云计算产业规模达到4300亿元的发展目标,中国云计算进入史无前例的增长快车道. 随着企业的积极上云,新的多样化的需求和特征也随之表现出来,从以往单一的建设私有云到转变为大胆采用公有云加私有云的混合云架构,或者从多个云厂商采购异构资源的多云架构,企业的云架构正在逐步向混合云.

利用 Django REST framework 编写 RESTful API

利用 Django REST framework 编写 RESTful API Updateat 2015/12/3: 增加 filter 最近在玩 Django,不得不说 rest_framework 真乃一大神器,可以轻易的甚至自动化的搞定很多事情,比如: 自动生成符合 RESTful 规范的 API 支持 OPTION.HEAD.POST.GET.PATCH.PUT.DELETE 根据 Content-Type 来动态的返回数据类型(如 text.json) 生成 browserable

用Docker快速打造企业Paas云计算平台

用Docker快速打造企业Paas平台 课程特色 Docker就像一场森林大火重新创造了一个全新的云计算领域,Docker作为云计算分布式软件工程的革命正在深刻地改变传统分布式系统的开发.测试和部署.其影响的神速远胜于云计算第一代技术OpenStack等:Docker不仅是历史上最流行的开源项目之一,而且也从根本上改变了人们构 建应用程序的思维方式.它可以把程序及依赖的二进制文件.第三方库等封装在一起,运行在任何安装 Docker Daemon 的服务器上,它有望成为未来软件自动化部署的标准.

linux下利用elk+redis 搭建日志分析平台教程

linux下利用elk+redis 搭建日志分析平台教程 http://www.alliedjeep.com/18084.htm elk 日志分析+redis数据库可以创建一个不错的日志分析平台了,下面我们来看一篇在linux下利用elk+redis 搭建日志分析平台教程,希望例子对各位有帮助. 这个是最新的elk+redis搭建日志分析平台,今年时间是2015年9月11日. Elk分别为 elasticsearch,logstash, kibana 官网为:https://www.elasti

简单几步打造网络视频直播平台(转)

简单几步打造网络视频直播平台 分类:学以致用 2013-02-04 13:20 阅读(1132)评论(0) 不管是个人玩还是企业用,直播电台总是显得比较高端和神秘,今天我们来看看怎么用简单几步实现基于Flash流媒体服务器的网络视频直接直播平台. 1.服务端准备 常见的免费Flash流媒体服务器有国产的UMS和国际开源的Red5,UMS只有windows平台安装包,而用java开发的Red5更秉承了开源软件一贯兼容特色,可以多平台运行. UMS相对简单,全经典windows程序安装步骤,安装过程