zoukankan      html  css  js  c++  java
  • 简易工作流设计思考(欢迎补充和批评)

    讨论地址:http://www.minioa.net/viewtopic.php?f=7&t=217

    目标要求
    满足企业管理流程网上审批的现实需求

    功能要求
    1、表单设计(略)
    2、表单支持附件
    3、表单修改权限控制
    4、可定义审批节点,可设置节点过期时间,并设置流程节点事件,
    5、过期节点任务即时提醒,实现任务推送
    6、节点完成或创建时可提醒,包括邮件、站内短信或手机短信,可以同时抄送审批流程外的人。
    7、支持节点分支和合并,例如条件分支下的审批金额的判断
    8、可以隐藏审批意见
    9、支持自由流程和固定流程
    10、支持流程挂起、终止
    11、支持流程版本管理
    12、可在手机上进行审批
    13、支持子流程
    14、流程统计和报表
    15、流程图动态显示流程执行情况
    16、流程设计器(略)
    17、审批权限授权,例如出差代理
    18、支持竞争执行
    19、支持M<=N的节点处理。例如,同时启动了N个任务,只要其中的M个任务完成即可继续执行。

    基础准备
    要求组织结构提供岗位关系表,可以清楚的判断当前申请人的岗位,申请人的上下级,以及部门经理等信息。
    允许一人多岗。
    流程人员邮箱有效。

    工作流引擎设计
    流程定义表
    表名:core_processdefinition
    主要字段,流程名称、流程描述、流程图(一张图片)、流程创建时执行的sql、删除前的sql,表单视图。

    节点定义表
    表名:core_processdefinition_task
    主要字段,
    processDefId 流程id
    taskCode 从0开始,第一个任务必须是0,01表示是任务0的第一个任务
    taskName
    taskType 0表示是自流程,1表示是任务
    taskApproveType 审批方式,指派给人,指派给角色,指派给岗位,部门经理
    taskApprover 审批人
    taskDuation 期限
    taskNextStep 节点操作
    approved=agree:2;approved=reject:1000;approved=withdraw:0;sql(select 1 from dual)=1:2
    approved表示审批结果, 同意agree,拒绝reject,退回withdraw,SQL()表示取得SQL语句返回结果
    例如,approved=agree:2,表示同意时,流转至任务2。
    任务完成时,通过这个表单式来控制流转方向。
    如果approved表示给出了审批意见,同意、拒绝或退回,agree:2表示如果给出了同意意见,就流转至任务2
    reject:1000表示拒绝的话就结束流程
    sql(select 1 from dual)=1:2表示通过sql语句来判断,如果sql()返回结果是1,就执行任务2

    taskNextSql 任务完成时执行的sql,支持流程实例id和表单id。

    任务代理表
    表名:core_task_agent
    允许一个人按照流程节点指派审批代理人。

    流程实例表
    表名:core_process

    任务列表
    表名:core_task
    交谈中请勿轻信汇款、中奖信息、陌生电话,勿使用外挂软件。

    CREATE TABLE `minioa`.`core_task` (
    `ID_` int(10) unsigned NOT NULL auto_increment,
    `CID_` int(10) unsigned default NULL,
    `CDATE_` datetime default NULL,
    `MID_` int(10) unsigned default NULL,
    `MDATE_` datetime default NULL,
    `processId` int(10) unsigned default NULL,
    `taskDefId` int(10) unsigned default NULL,
    `startDate` datetime default NULL,
    `endDate` datetime default NULL,
    `taskStatus` varchar(45) default NULL,
    `note` varchar(400) default NULL,
    `uuid` varchar(45) default NULL,
    `taskApprover` varchar(45) default NULL,
    PRIMARY KEY (`ID_`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    前5个是系统字段
    processId是流程实例id,对应core_process
    taskDefId是节点对应id,对应core_processdefition_task
    startDate任务开始日期
    endDate任务结束日期
    taskStatus任务状态 running还是agree 或reject
    taskApprover是最终审批人的账号
    note是审批意见
    uuid也算是个唯一标识,有用处

    过期任务提醒
    创建一个定时器,对过期任务每天提醒一次。

    流程和表单绑定
    给表单添加一个流程按钮,设置好流程id和表单名称两个参数。

    流程实例页面,
    processentity.xhtml

    表单设计(略)
    自行设计流程表单,也要设计一张表单视图,在流程实例中显示。
  • 相关阅读:
    Android安全-数据安全3-通信安全
    Android安全-数据安全2-存储安全
    Android安全-数据安全1-代码中的字符串安全
    Android安全-代码安全5-调试器和模拟器的检测
    Android安全-代码安全4-逆向工具对抗
    Android安全-代码安全3-Dex文件校验
    Python----Anaconda + PyCharm + Python 开发环境搭建(使用pip,安装selenium,使用IDLE)
    Selenium----Selenium WebDriver /RC工作原理
    Selenium----Selenium简单介绍以及Selenium IDE环境搭建,脚本录制
    Python+Selenium----使用HTMLTestRunner.py生成自动化测试报告2(使用PyCharm )
  • 原文地址:https://www.cnblogs.com/liuzhengdao/p/2159076.html
Copyright © 2011-2022 走看看