因工作需要,做了个工作流系统,用于本部门对其他部门提供服务的接口。做之前在网上找了些资料,也研究了django的一个工作流框架:django-workflow。但感觉很不好用,不是很灵活。于是按照自己的理解自己做了。思路如下:

术语定义如下:

工单:具体的待处理事项,用户新建的是工单,工单按照工作流的设计来实现不同状态不同处理人之间的流转

工作流:即工作流的设计,定义了工单的审批链、各状态的处理人、各状态可以执行的操作(提交、保存,处理完成,退回,关闭等等)、每个状态下显示哪些字段、哪些字段可以在哪些编辑。

工作流处理过程可以理解为工单状态的变化,如一个工作流处理过程中可以有:发起人新建中、发起人编辑中、部门经理审核中、技术人员处理中、发起人验证中、结束等状态,每个状态对应相应的处理人(如部门经理审核中这个状态下只有部门经理才可以处理该工单)。如用户在新建工单的时候处于“发起人新建中”,(用户)提交后工单处于“部门经理审核中”, 部门经理(即“部门经理审核中”状态的处理人)审批通过后,工单的状态变更为“技术人员处理中”。

于是可以设计表结构如下:

1、工单表(myworkflowjob):字段可以包括 标题、创建人、当前处理人,创建时间、详细信息、等,  然后与设计的工作流关联:"工作流"字段

2、工作流表(myworkflow):字段包括工作流名称、描述、流程图、提醒方式(短信、邮件、短信+邮件、不提醒等等)、初始状态

3、工作流状态表(myworkflowsstate):字段包括状态名称、该状态下的处理人类型(如部门、个人,角色,职位等等)、具体的处理人(如类型为部门,那么就可以为财务部,行政部等等。如为个人那就是具体的人名字),工单接单方式(主动接单、系统随机分配)、是否为最终状态、关联的工作流

4、工单流转表(myworkflowtran): 字段包括名称(即操作名称:如提交、保存、退回、关闭等)、初始状态、目标状态

5、日志表(myworkflowdisposelog):用于记录处理人各种操作,字段可包括:操作名称、时间、处理意见。

6、工单查看页面表单的展现表(myworkflowdisplayfield):用于定义工单查看时表单中显示哪些字段,字段包括:工作流(myworkflow_id)、字段名

7、工单处理页面状态字段表(myworkflowstatefield):用于用户处理工单时候页面总显示那些字段。字段包括:状态(myworkflowsstate_id)、字段名、读写权限(只读、可编辑)

8、工单类型与工作流关联表(myworkflowtype):用于不同工单类型与工作流的关联。达到用户选择不同类型的工单后系统对其使用相应的工作流及相应的表单。字段包括名称、上级类型、工作流(myworkflow_id)

本项目组多工作流使用一个工单表。所以初始化需要将必要的字段都写到该表中

新建(配置)工作流思路:

新建工作流名称(表myworkflow)-->添加状态、该状态下的处理表单要显示的字段及是否可以编辑(表myworkflowsstate)--->设置初始状态(表myworkflow)---->设置工单流转(即工单流转表myworkflowtran)

设置工单类型(请假、监控处理、权限申请等等)与工作流之间的关联即表myworkflowtype

工单处理逻辑:

1、在新建工单的页面中,用户选择工单类型,后台根据“工单类型与工作流关联”的表来确定使用的工作流

2、根据确定的工作流弹出工单信息输入界面(内容包括标题、详细信息、附件等等,具体表单字段通过改工作流的初始状态来确定),根据工作流的初始状态查找状态表来确定可以执行的操作(提交、保存,处理完成,退回,关闭等),将这些操作作为该界面的按钮,用户填写完工单基本信息后点击相应的操作按钮,来实现状态的流转。后台结合前端提交的数据并生成工单必备的字段信息(工单创建时间、创建人、流水号等),将这些信息写到工单表里。其中当前状态、当前处理人通过工单流转表和状态表来确定 用户执行相应操作后导致的属性变化

3、通过步骤2中插入到工单表中的数据“处理人类型”、“当前处理人”来确定哪些人有权限处理这些工单。 如果处理人类型不是“个人”,那就根据这条数据中的“当前状态“来确定接单方式,主动接单(有权限的人先执行接单操作将当前处理人变更为自己再处理),系统随机分配(后台在执行状态流转时随机设置工单当前处理人为符合条件的某一个人)

3、查看工单的界面通过 “工单查看页面表单的展现表”来确定 显示哪些字段

4、处理工单的界面通过“工单处理页面表单的展现表” 来确定显示哪些字段,以及哪些字段可以在处理过程中再次修改

效果图:

python工作流界面_python 版工作流设计相关推荐

  1. 如何用python做界面_Python+AutoIt实现界面工具开发

    原标题:Python+AutoIt实现界面工具开发 前言 不同于Linux服务器上的命令行操作,在windows系统上用户的使用习惯还是倾向于使用有界面的工具.如果工具是命令行交互操作的方式,可能是有 ...

  2. python 网格策略_Python版简单网格策略

    Python版简单网格策略 策略广场上的Python策略不多,这里编写了一个Python版本的网格策略.策略原理十分简单,在一个价格区间内固定价格距离产生一系列的网格节点,当行情变化时,价格到达一个网 ...

  3. python对话框大小_Python 版 AR 对话框

    周末了,用 Python 代码给大家带来一个好玩的视频特效:Python 版 AR 对话框https://www.zhihu.com/video/1110617264784699392 摄像头拍摄的视 ...

  4. python操作界面_Python使用PyQt5的Designer工具创建UI界面

    一.Designer-UI编辑器 Designer是pyqt5-tools带的工具,默认可以在Python安装目录下找到的.我的之前项目导入过pyqt5-tools,所以我直接全盘搜索到了. 打开de ...

  5. python rm 条件_python版rm命令

    安全的linux rm 命令 -- python版rm命令 众所周知 linux 下 大杀器之一 rm 是多么恐怖的东西存在 众多系统管理员 对此命令是又爱 又恨, 基于本人也是一枚系统管理员, 写下 ...

  6. python五子棋界面_python实现的控制台五子棋

    教妹子怎么用python,自己随手写的一个五子棋,没有ai,双人对下,不需要界面,是学习入门必备佳品. 1.[代码][Python]代码 import os import pdb ''' @autho ...

  7. python操作界面_python页面操作

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python操作mongodb1.1. 前言1.2. 综合应用python操作m ...

  8. python天气预报界面_Python 做 UI 超 easy!(3.1)——天气预报小工具

    前面我们做了一个简单的视窗应用,已经对 PySimpleGUI 有了大概的 "感觉",做出来的东西别管多简单吧,起码有点 "产品" 的意思了.上一节实现的 de ...

  9. python天气预报界面_Python开发,用GUI编写一个天气查询桌软件

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章来源于快学Python ,作者叶庭云 刚接触Python的新手.小白,可以复制下面的链接去 ...

  10. python管道界面_python中管道用法入门实例

    本文实例讲述了python中管道用法.分享给大家供大家参考.具体如下: #!coding=utf-8 import multiprocessing def consumer(pipe): output ...

最新文章

  1. spark context stop use with as
  2. HTML 5 令人期待的 5 项功能
  3. 62. Unique Paths
  4. ADO.net商机题目
  5. C++primer第二章2.4节对于const限定符相关内容进行详解
  6. 计算机丢失pcdsp.dll,计算机libcef.dll丢失
  7. 7-64 计算平均成绩 (15 分)
  8. TCP/IP是如何实现可靠传输的
  9. 腾讯之后,网易跟上了:未成年人每日限玩1.5小时游戏
  10. (三)重构ResNet50以诊断COVID-19
  11. mysql大于等于怎么写_MySQL 对于千万级的大表要怎么优化?我写了6000字的深度解读...
  12. python实现一个简单的网上购物系统
  13. 泰凌微8258入门教程 环境篇②——Telink IDE开发环境搭建
  14. 记一次修复Mac和Win7双系统启动菜单的经历
  15. 永强教你加解密:对称篇(一)
  16. 获取安卓的SHA1值
  17. PyTorch参数模型转换为PT模型
  18. JUC之锁的八种情况
  19. STM8L探索套件学习笔记-EXTI外部中断
  20. 引入css样式表的三种方式(全)

热门文章

  1. 旋风解析磁力php,2018年免费引擎和正版旋风四核引擎棋力测试分析
  2. 【RecSys】推荐系统和计算广告经典算法论文及实现总结
  3. pythoncharm设置翻译器_pyCharm 设置调试输出窗口中文显示方式(字符码转换)
  4. Java语言程序设计课程设计
  5. MySQL详细安装教程
  6. c语言程序设计第三版朱立华主编课后答案,C语言程序设计习题解析与实验指导...
  7. html5在线查看pdf,HTML5在线预览PDF
  8. 安卓pdf阅读器_PDF阅读用哪款软件好?推荐这7款,简单又好用!
  9. 基于javaWEB技术的SSM音乐网站设计与实现(含论文+程序设计+PPT答辩)
  10. Visio2007画E-R图