因工作所需以及管理个人一些日常事项,自己基于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.代码走查项目导出到表格的问题

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

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

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

    相关文章: 利用django打造自己的工作流平台(一):从EXCEL到流程化运作 本文是“利用django打造自己的工作流平台”系列文章的第二篇,在自己开发的工作流平台中添加了一个用于排查统计可能受感 ...

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

    近期受疫情影响公司食堂不开放,为解决同事们的吃饭问题,部门需要在每周五统计下周的订餐情况:员工根据个人意愿选择是否从公司订下周的午餐和晚餐,一旦确定一周保持不变. 通常要完成一次部门内员工的订餐信息收 ...

  3. CODING DevOps 助力中化信息打造新一代研效平台,驱动“线上中化”新未来

    中化信息技术有限公司,简称"中化信息",是世界 500 强企业中国中化控股有限责任公司(简称"中国中化")的全资直属公司,依托于中国中化的信息化建设实践,建立起 ...

  4. Python分布式爬虫打造搜索引擎完整版-基于Scrapy、Redis、elasticsearch和django打造一个完整的搜索引擎网站

    Python分布式爬虫打造搜索引擎 基于Scrapy.Redis.elasticsearch和django打造一个完整的搜索引擎网站 https://github.com/mtianyan/Artic ...

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

    怎样利用App打造自明星实现自盈利 1.了解各个概念       为了大家都能看懂这篇文章,先说明几个概念.        App(Application):能够在移动设备上使用,满足人们咨询.购物. ...

  6. 利用 Django admin 完成更多任务(转)

    利用 Django admin 完成更多任务   Django admin Django 为未来的开发人员提供了许多功能:一个成熟的标准库,一个活跃的用户社区,以及 Python 语言的所有好处.虽然 ...

  7. Django 1.6在Windows平台下的配置

    Django 1.6 在Windows平台下的配置 前言 最近两天研究了下Django1.6在Windows平台中的配置安装,服务器采用Apache.期间遇到过许多新手所遇到的各种问题,也算是一种宝贵 ...

  8. SharePoint 2013 工作流平台的选项不可用

    问题描述 当我想创建一个SharePoint 2013 工作流的时候,打开SharePoint 2013 Designer(一下简称SPD),发现没有SharePoint 2013 工作流的选项.原来 ...

  9. [Python] 利用Django进行Web开发系列(一)

    1 写在前面 在没有接触互联网这个行业的时候,我就一直很好奇网站是怎么构建的.现在虽然从事互联网相关的工作,但是也一直没有接触过Web开发之类的东西,但是兴趣终归还是要有的,而且是需要自己动手去实践的 ...

随机推荐

  1. celery参考

    1,https://www.wandouip.com/t5i377365/ 2,https://www.cnblogs.com/zhangmingcheng/p/6050270.html (syste ...

  2. Springboot项目搭建(1)-创建,整合mysql/oracle,druid配置,简单的CRUD

    源码地址:https://github.com/VioletSY/article-base 1:创建一个基本项目:https://blog.csdn.net/mousede/article/detai ...

  3. vue生命周期中update的具体用法

    在页面上 改变元数据data中数据,并且导致页面重新渲染时,才会进入update周期

  4. 《MySQL命令执行过程和存储引擎概述》阅读笔记

    使用MySQL的完整过程: 启动MySQL服务器程序. 启动MySQL客户端程序并连接到服务器程序. 在客户端程序中输入一些命令语句发送到服务器程序,服务器程序收到这些请求后,会根据请求的内容来操作具 ...

  5. CSS-自适应网页使用@media和rem

    @media 查询 @media 媒体查询选择性加载css,意思是自动探测屏幕宽度,然后加载相应的CSS文件.可以针对不同的屏幕尺寸设置不同的样式,特别是需要设置设计响应式的页面,@media 是个不 ...

  6. ASP.NET Core搭建多层网站架构【15-扩展之使用Obfuscar混淆加密保护代码】

    2020/02/03, ASP.NET Core 3.1, VS2019, Obfuscar 2.2.25 摘要:基于ASP.NET Core 3.1 WebApi搭建后端多层网站架构[15-扩展之使 ...

  7. 为 git 设定 socks5 代理

    为 git 设定 socks5 代理 查看当前设定 git config --global -l 为 git 设定全局代理 git config --global http.proxy socks5h ...

  8. Scrapy爬取某装修网站部分装修效果图

    爬取图片资源 spider文件 from scrapy.linkextractors import LinkExtractor from scrapy.spiders import CrawlSpid ...

  9. Java面向对象编程 -3

    this关键字 this可以算是Java里面比较复杂的关键字,因为this的使用形式约定了它的灵活性,在程序里面,使用this可以实现以下三类结构的描述: 当前类中的属性:this属性; 当前类中的方 ...

  10. Update(Stage4):Spark原理_运行过程_高级特性

    如何判断宽窄依赖: =================================== 6. Spark 底层逻辑 导读 从部署图了解 Spark 部署了什么, 有什么组件运行在集群中 通过对 W ...