技术标签: 表单式工作流 接口设计 系统设计 功能模块设计 项目经验 数据库设计
最近一个项目中需要独自设计一个表单式工作流功能模块,在此将整个功能模块的设计思路分享出来。
此处所有的需求是建立在医院临床信息管理系统之上的。这里只分析关于表单式工作流功能模块的需求。
关于表单式工作流功能模块的需求全部整理如下:
针对这些需求,对整个工作流功能模块初步的想法大概是这个样子:
上述要实现的表单式的工作流跟oa系统中的工作流不大一样,oa系统中的工作流一般是这样几个步骤:
整个oa系统的工作流功能的核心就是多级审批机制,但我们需求中的表单式的工作流,并不设计审批机制,整个工作流的功能可以简单理解为:一条患者信息选择流程后会在各个时期不停流动,在一个时期需要填写非常多的表单,这些表单填写完成后,医生点击进入下一流程,患者信息即可进入下一流程,但是这条患者信息已经留在了每个时期的表单中,医生仍然可以查看和修改这条信息。
oa式的工作流的实现非常复杂,市面上也有商业化和开源的工作流框架和引擎,但是针对我们这个需求来看,如果硬加使用,只会使整个业务更加复杂,因此,最好的办法就是自己设计一种简单工作流机制,实现上述全部的需求。
根据上面的需求分析和功能实现的分析,设计的整个工作流结构如下:
根据上面的分析,总的设计思路如下:
各时期的主表主要干的事情就是存储患者信息的id,代表着患者正处于当前流程节点或者已经完成该流程节点。
字段 | 说明 |
---|---|
id | 患者id |
… | 权限管理需要的其它字段 |
字段 | 说明 |
---|---|
id | 患者id |
… | 患者表所有字段 |
存储基本信息,关键是外键是主表的id。
字段 | 说明 |
---|---|
id | 唯一id |
… | 所有数据字段 |
主要是绑定主表,还可以添加一个时期的额外数据,比如一个时期的表单填写提示。
字段 | 说明 |
---|---|
id | 唯一id |
master_table | 主表名称 |
… | 权限控制相关字段 |
… | 该时期的其它数据字段 |
在工作流表中绑定多个工作节点有两种方式:
同样,两种方式各有好处:
字段 | 说明 |
---|---|
id | 唯一id |
process_name | 工作流名称 |
process_des | 工作流描述 |
process_ndoes | 所有节点id |
… | 权限控制相关的其它字段 |
字段 | 说明 |
---|---|
id | 唯一id |
process_name | 工作流名称 |
process_des | 工作流描述 |
node_num | 节点数目 |
process_hash | 工作流哈希值 |
node1 | 节点1 |
node2 | 节点2 |
node3 | 节点3 |
… | 若干节点 |
… | 权限控制相关的其它字段 |
患者表中和流程相关的一共三个字段:工作流id,当前节点id,下一节点id。其中存储下一节点id的做法类似单链表。
字段 | 说明 |
---|---|
id | 唯一id |
process_id | 工作流id |
current_node_id | 当前节点id |
next_node_id | 下一节点id |
… | 所有数据字段 |
1.新增工作流节点。
2.修改工作流节点。
3.删除工作流节点。
4.查询工作流节点。
1.新增工作流。
2.修改工作流。
3.删除工作流。
4.查询工作流。
CRUD操作略。
查询患者流程信息。
患者流程通过。
这种表单式工作流的设计,理论上是可以抽取出来成为一个独立的框架,待日后有时间精力再去尝试。
ATFWUS 2021-08-26
文章浏览阅读253次。cognos11同样适用于自定义java程序的第三方认证,而且在测试方面给了直观的测试接口,如下图所示当用户配置好了自定义java程序的认证之后,程序会提示用户输入我们自己的认证库用户信息例如admin 123456,通过认证以后,测显示如下启动服务可以在启动详情里面看到启动的过程中已经创建了新的命名空间说明第三方认证功能第一步已经配置OK了,是否成功还要接下来去cogno..._cjap
文章浏览阅读973次。By 超神经场景描述:利用 AI 技术判断一个人的情绪通常有两种途径,一种是通过面部表情,另一种是通过语音。前者已经比较成熟,而语音识别情感方面的研究,正在快速发展。近期...
文章浏览阅读744次。强烈推荐的机器学习,深度学习课程以及python库张冰洋9 个月前本着两条原则推荐一波机器学习,深度学习的课程以及常用的库:1.不建议报辅导班。不是因为我们不应该为学习知识付费, 而是因为有更好的资源,而这些资源恰好免费。报辅导班学习浪费钱倒是次要的,主要是时间有限,所以我们要把最好的时间集中在最高效的事情上。2.视频资源种类繁多,但我只选最有价值的。Are y_机器学习深度学习谁讲得好
文章浏览阅读2.2k次。python:1.语法强制缩进2.区分大小写:iLoop与iloop是两个变量3.变量无需申明,但是变量赋值前无法使用:a=3合法,b=a+3合法,b=a+c不合法,因为c未赋值前不能使用4.变量类型:数字,字符串等等5.基本语句为赋值语句x=y,数学运算x=y+/-/*//z,比较运算:==,=,等,条件语句ifelse,循环语句for,循环语句while6.内置函数7.类与类方法按这个顺序每步..._python基本代码大全
文章浏览阅读197次。本文总结了交通灯控制技术的发展,讨论了基于PLC的十字路口交通信号灯控制系统的设计可行性。根据PLC的工作原理并结合城市交通的实际状况,本文提出了以三菱公司生产的FX2N-128MT-001型PLC作为基本控制核心,安排了四个方向的直行、左转红黄绿灯,人行道红绿灯以及倒计时数码管的具体配置;随着社会的发展和进步以及人民生活水平的提高,上路的车辆越来越多,但相应的公路设施却没有相应的改善,这就导致了城市交通拥堵问题突出,而且拥堵的地方多是十字路口等车辆汇集处。信号灯无线遥控系统的设计。信号灯控制系统的设计。_智能交通灯三菱plc接线图解
文章浏览阅读1.6k次,点赞29次,收藏28次。1.进程间通信的分类:(1)管道:1、匿名管道pipe;2、命名管道mkfifo(2)System V IPC:1、System V 消息队列;2、System V 共享内存;3、System V 信号量。(3)POSIX IPC:1、消息队列;2、共享内存;3、信号量;4、互斥量;5、条件变量;6、读写锁。前面已经了解了进程间管道通信,那么共享内存又是什么原理?_进程间的通信共享内存
文章浏览阅读2k次,点赞10次,收藏16次。本手册面向系统管理员及相关技术人员,实现在服务器整机上使用图形化界面快速完成银河麒麟高级服务器操作系统 V10(以下简称“银河麒麟服务器操作系统”)的安装。重要:针对不同 CPU 平台可能有少许差异,本手册尽量加以说明;如未提到之处,以各硬件平台实际安装情况及输出信息为准。在【安装信息摘要】页面配置所有与安装相关的信息,如下图所示:图 5-1 安装信息摘要您可以点击相应配置项的图标进入配置页面,需要注意的是【软件】和【系统】两类配置。安装程序会自动检测各个配置项;_银河麒麟服务器操作系统 v10
文章浏览阅读88次。mvn -v查看maven的版本-compile 编译-test 测试clean 删除targetinstall 安装jar包到本地仓库mvn archetype generate 自动创建maven目录groupid 公司名+项目名artifactid 项目名+模块名仓库分为本地仓库和远程仓库<build> <plugins&g...
文章浏览阅读2.9k次。文章目录一、第二章练习题解答练习2-1练习2-2练习2-3练习2-4练习2-5练习2-6练习2-7练习2-8练习2-9练习2-10练习2-11小结一、第二章练习题解答练习2-1**简单消息 将一条消息赋给变量, 并将其打印出来。**msg = "I love learning to use Pythoy"print(msg)练习2-2**多条简单消息 将一条消息赋给变量, 并将其打印出来; 再将变量的值修改为一条新消息, 并将其打印出来。**msg = "I love learning_python编程:从入门到实践(第2版)习题答案
文章浏览阅读962次,点赞6次,收藏11次。DockerCompose作为一种容器编排工具,可以让我们轻松地配置和管理多个Docker容器,从而快速搭建PHP开发环境_docker-compose php
文章浏览阅读314次。0. 概述VTune是Intel一个比较强大的性能分析软件。主要包括三个小工具:(1)Performance Analyzer:性能分析,找到软件性能比较热的部分,一般也就是性能瓶颈的关键点,帮助我们收集数据发现问题,至于Analyzer这个功能,有点大言不惭了,还得靠各位大家自己分析了,当然..._intel vtune amplife使用
文章浏览阅读231次。Helm 3.0 已经发布,该版本是 CLI 工具的最新主要版本,主要关注简单性、安全性和可用性,内容如下:新特性移除 Tiller(Helm 2 是一种 Client-Server 结构,客户端称为 Helm,服务器称为 Tiller)。Helm 3 只有客户端结构,客户端仍称为 Helm。如下图所示,它的操作类似于 Helm 2 客户端,但客户端直接与 Kubernetes API 服务器交互..._helm 3.0没有serve和client