工作流数据库设计

合集下载

(OA自动化)金蝶OA协同办公软件数据库设计数据字典

(OA自动化)金蝶OA协同办公软件数据库设计数据字典

(OA自动化)金蝶OA协同办公软件数据库设计数据字典金蝶软件(中国)有限公司一、表定义本节按功能模块对相关数据库表进行定义。

1.1.公文处理1.1.1.表Workflow工作流表。

记录工作流的一些基础信息,属于工作流主表。

字段定义:OBSERVERS NVARCHAR2(1024)流程观察员SUPERVISORS NVARCHAR2(1024)流程监控员DESCN NVARCHAR2(200)描述SUPEROBSERVERS NVARCHAR2(1024)超级观察员SUPERPRINTERS NVARCHAR2(255)打印解锁人DESCN NVARCHAR2(1024)备注说明1.1.2.表WORKFLOW_DICTS表单字典表。

用作工作流表单中的字典选择。

OPTIONS可用/隔开。

字段定义:1.1.3.表WORKFLOW_FILE公文表。

记录公文所属工作流,表单,字段等基本信息表。

字段定义:2:已归档案系统 5:已归)默认为:0 FROM_TYPE NUMBER(10)0正常拟稿,1流程转换,2参照新起,3后续流程,4子流程,5其他来源,例如传阅交换FROM_ID NUMBER(10)来自其它类型的公文的ID FIELDSTR1NVARCHAR2(50)字符型短字段1FIELDNUM1NUMBER(10)数值型短字段1FIELDSTR2NVARCHAR2(50)FIELDNUM2NUMBERFIELDSTR3NVARCHAR2(50)FIELDNUM3NUMBERFIELDSTR4NVARCHAR2(50)FIELDNUM4NUMBERFIELDSTR5NVARCHAR2(50)FIELDNUM5NUMBERFIELDSTR6NVARCHAR2(50)FIELDNUM6NUMBERFIELDSTR7NVARCHAR2(50)FIELDNUM7NUMBERFIELDSTR8NVARCHAR2(50)FIELDNUM8NUMBERFIELDSTR9NVARCHAR2(50)FIELDNUM9NUMBERFIELDSTR10NVARCHAR2(50)FIELDNUM10NUMBERFIELDSTR11NVARCHAR2(50)FIELDNUM11NUMBERFIELDSTR12NVARCHAR2(50)FIELDNUM12NUMBERFIELDSTR13NVARCHAR2(50)FIELDNUM13NUMBERFIELDSTR14NVARCHAR2(50)FIELDNUM14NUMBERFIELDSTR15NVARCHAR2(50)FIELDNUM15NUMBERFIELDSTR16NVARCHAR2(50)FIELDNUM16NUMBERFIELDSTR17NVARCHAR2(50)FIELDNUM17NUMBERFIELDSTR18NVARCHAR2(50)FIELDNUM18NUMBERFIELDSTR19NVARCHAR2(50)FIELDNUM19NUMBERFIELDSTR20NVARCHAR2(50)FIELDNUM20NUMBERFIELDSTR21NVARCHAR2(50)FIELDNUM21NUMBERFIELDSTR22NVARCHAR2(50)FIELDNUM22NUMBERFIELDSTR23NVARCHAR2(50)FIELDNUM23NUMBERFIELDSTR24NVARCHAR2(50)FIELDNUM24NUMBERFIELDSTR25NVARCHAR2(50)FIELDNUM25NUMBERFIELDSTR26NVARCHAR2(50)FIELDNUM26NUMBERFIELDSTR27NVARCHAR2(50)FIELDNUM27NUMBERFIELDSTR28NVARCHAR2(50)FIELDNUM28NUMBERFIELDSTR29NVARCHAR2(50)FIELDNUM29NUMBERFIELDSTR30NVARCHAR2(50)FIELDNUM30NUMBERLONGSTR1NVARCHAR2(512)LONGSTR2NVARCHAR2(512)LONGSTR3NVARCHAR2(512)LONGSTR4NVARCHAR2(512)LONGSTR5NVARCHAR2(512)LONGSTR6NVARCHAR2(1024)LONGSTR7NVARCHAR2(512)LONGSTR8NVARCHAR2(512)LONGSTR9NVARCHAR2(512)LONGSTR10NVARCHAR2(512)RECEIVER NVARCHAR2(50)1.1.4.表WORKFLOW_FILEATTACH公文附件表。

简单的工作流引擎--数据库设计及开发

简单的工作流引擎--数据库设计及开发

简单的⼯作流引擎--数据库设计及开发介绍之前没怎么接触过⼯作流,在⽹上参考了⼀些相关的案例。

任务着急,并没有太看透彻就开始coding了。

这套⼯作流引擎并不复杂,主要是应对简单的流程运转及权限控制。

我们主要⽤在售后等⼯单系统中,⼀张⼯单。

主要实现了以下功能1.⼯作流程的界⾯设计2.流程根据设定的路线流转,设定每个节点的权限,控制流程的编辑及访问,设定流程中每个⽤户对应每个字段的权限3.流程分⽀的⾃动判断4.流程的接单及驳回数据库结构这是⼯作流引擎中涉及到的所有表了。

B开头的为主表,L为关联表,R为引⽤表存储些类型之类的常量。

主要表及字段说明主要的流程设计只保存在两张表中。

流程节点表以及路由表。

为了使⼯作流与业务结合,我们⽤到了流程实例表,以及活动记录表。

每开启⼀个流程,便创建⼀条流程实例,每⼀次流程节点的变动,创建⼀条活动记录。

在活动记录表中,设置了接单⼈字段belongUser,每条节点的编辑之前需要有接单⼈。

可以在提交上⼀节点的时候指定下⼀节点的接单⼈或者点击接单来⼿动接单。

这样设计来避免多⼈同时编辑同⼀个节点。

流程图设计界⾯设计图使⽤的是gooFlow框架,功能⽐较简单,但是恰巧适合我这种并不复杂的⼯作流系统。

⼤家有兴趣的可以下载下来玩⼀下,Demo和Ap i讲解的也⽐较详细对于多个分⽀的情况,有⽤户操作的为⼿动选择下⼀流程。

⽆操作界⾯的话需要需要在路由⾥写上相应的条件语句,来判断接下来要⾛那⼀条路由。

以换货流程为例:在创建退货订单的时候就会⾃动创建⼀条退货的售后⼯单,同时需要传⼊⽀付⽅式及换货单的状态给⼯作流。

相关代码我将每个⼯作流封装为⼀个dto,⾥⾯包括此⼯作流的所有相关信息,系统启动时加载到内存中,在修改⼯作流程时刷新。

⼯作流上下⽂上图只保存了⼯作流的内容,关联到业务的话,还需要⼀个⼯作流上下⽂的类。

此类中应该包括⼯作流当前的状态等信息,同时提供⼀些基本的扩展⽅法。

下图为⼯作流上下⽂类的结构 写下此⽂⼀来为了锻炼⼀下⾃⼰写博客的能⼒以及表达能⼒。

一种基于关系型数据库的工作流管理系统设计

一种基于关系型数据库的工作流管理系统设计

作者简介 : 段丽(97 )女, 17一 , 河南省洛阳市人 , r 江苏大学硕士研究生, 主要研究方向为工作流, 软件工程 ; 宋顺林(97 ) 14一 ,男, 江苏省溧阳市人, 江苏大学教授 , 博士生导师, 主要研究方向为企业信息化与软件工程.
第 6期
段 丽等: 一种基于关 系型数据库 的工作 流管理 系统设计
第2 3卷
第 6期
郑 州 轻 工 业 学 院 学 报 (自 然 科 学 版 )
JU N LO H N Z O NV R IYO G TID SR ( a r c ne O R A F E G H UU IE ST F IH U T Y Nt aSi c} Z L N ul e
V0 . 3 No 6 12 .
系 统服务 为 中心 , 部 流 程 定 义 工 具 、 理 和 监 控 外 管 工具 、 客户 应 用 程 序 和其 他 工 作 流 系 统 , 过 接 口 通 与它 进行数 据交 换 . 作 流管 理 系统 主 要 功 能部 工
DUAN i S L, ONG h n ln S u —i
( oeeo o p ,ins nv ,hna g2 2 1 , hn ) C lg l fC m . J guU i Z ej n 10 3 C i a . i a
Ab t a t: k n fRDBMS b s d wo k o ma a e n y tm sd sg e y me n ft e c r e h s r c A i d o - a e r f w n g me ts se wa e i n d b a s o h o e tc — l n lg r f w n i e oo y wo k o e gn .Th y t m o d c sd t x h n e h o g n ef c swi u id r c s e ・ l es se c n u t aa e c a g str u h i tra e t o ts e p o e sd f h i nto o l n u tme p l ain . e d sg e i n to sa d c so ra pi to s Th e in d RDBMS c n s v h y tm no main i h o m f i c a a e te s se if r t n t e fr o o a s cfc e tt O a o a h e e i tg ai n wih oh r s se n e s pe i n i S st c iv n e rto t t e y tms a d r u e. i y

工作流数据库设计

工作流数据库设计
工作流设计参考(包括PHP实现)
本文关键词:php工作流,workflow
工作流设计的工作流很少有让人满意的,即便是国内用的比较多的jbpm,用起来也会觉得很便扭。再加上PHP中没有什么好用的工作流,于是干脆自己设计一个,设计的原则如下:
1根据80/20原则,只使用wfmc模型中最符合自身应用的20%功能
If($next_node_id < $ cur_node_id) { //回退
删除所有大于$next_node_id的Thread
}
init_thread($next_node_id);
Case 2:自动处理
修改$thread为已完成
If($next_node_id < $ cur_node_id) {
发起人
发起人,用于显示自己的流程
tbl_workflow_thread:流程执行线程表
thread_id
线程id
process_id
进程id
process_desc
进程描述
node_id
结点id
node_name
结点名称
executor
执行人
start_time
线程生成时间
receive_time
线程接收时间
流程流转函数
prev_node_index
前结点序号
例如1。开始结点没有
执行前,通过此来校验一下流程
next_node_index
后结点序号
例如[同意]3,[不同意]4。尾结点或要结束的结点没有,若没有,直接调用end
executor
执行角色,组,人
role[1,2] group[1,2] user[1,2],为空由运行时决定

Activiti工作流数据库表结构

Activiti工作流数据库表结构

Activiti数据表结构目录1ACTIVITI数据库表结构 ----------------------------------------------------- 21.1数据库表名说明--------------------------------------------------------- 21.2数据库表结构----------------------------------------------------------- 31.2.1Activiti数据表清单: ------------------------------------------------- 31.2.2表名:ACT_GE_BYTEARRAY (通用的流程定义和流程资源)------------------- 31.2.3表名:ACT_GE_PROPERTY (系统相关属性)-------------------------------- 41.2.4表名:ACT_HI_ACTINST (历史节点表)----------------------------------- 51.2.5表名:ACT_HI_ATTACHMENT (附件信息)---------------------------------- 51.2.6表名:ACT_HI_COMMENT (历史审批意见表)------------------------------- 61.2.7表名:ACT_HI_DETAIL (历史详细信息)---------------------------------- 71.2.8表名:ACT_HI_IDENTITYLINK (历史流程人员表)-------------------------- 71.2.9表名:ACT_HI_PROCINST(历史流程实例信息)核心表----------------------- 81.2.10表名:ACT_HI_TASKINST(历史任务流程实例信息)核心表----------------- 81.2.11表名:ACT_HI_VARINST(历史变量信息)-------------------------------- 91.2.12表名:ACT_ID_GROUP(用户组表)------------------------------------- 101.2.13表名:ACT_ID_INFO (用户扩展信息表)------------------------------- 101.2.14表名:ACT_ID_MEMBERSHIP(用户用户组关联表)------------------------ 111.2.15表名:ACT_ID_USER(用户信息表)------------------------------------ 111.2.16表名:ACT_RE_DEPLOYMENT(部署信息表)------------------------------ 111.2.17表名:ACT_RE_MODEL (流程设计模型部署表) ---------------------------- 121.2.18表名:ACT_RE_PROCDEF (流程定义表)-------------------------------- 131.2.19表名:ACT_RU_EVENT_SUBSCR (运行时事件) ----------------------------- 141.2.20表名:ACT_RU_EXECUTION (运行时流程执行实例)---------------------- 141.2.21表名:ACT_RU_IDENTITYLINK(身份联系)------------------------------ 151.2.22表名:ACT_RU_JOB(运行中的任务)----------------------------------- 151.2.23表名:ACT_RU_TASK(运行时任务数据表) -------------------------------- 161.2.24表名:ACT_RU_VARIABLE(运行时流程变量数据表) ------------------------ 17 2ACTIVITI中主要对象的关系------------------------------------------------- 181Activiti数据库表结构1.1数据库表名说明Activiti工作流总共包含23张数据表,所有的表名默认以“ACT_”开头。

数据库设计规范

数据库设计规范

概述目的软件研发数据库设计规范作为数据库设计的操作规范,详细描述了数据库设计过程及结果,用于指导系统设计人员正确理解和开展数据库设计。

适用范围术语定义DBMS:数据库管理系统,常用的商业DBMS有Oracle, SQL Server, DB2等。

数据库设计:数据库设计是在给定的应用场景下,构造适用的数据库模式,建立数据库及其应用系统,有效存储数据,满足用户信息要求和处理要求。

概念数据模型:概念数据模型以实体-关系(Entity-RelationShip,简称E-R)理论为基础,并对这一理论进行了扩充。

它从用户的观点出发对信息进行建模,主要用于数据库概念级别的设计,独立于机器和各DBMS产品。

可以用Sybase PowerDesigner工具来建立概念数据模型(CDM)。

逻辑数据模型:将概念数据模型转换成具体的数据库产品支持的数据模型,如关系模型,形成数据库逻辑模式。

可以用Sybase PowerDesigner工具直接建立逻辑数据模型(LDM),或者通过CDM转换得到。

物理数据模型:在逻辑数据模型基础上,根据DBMS特点和处理的需要,进行物理存储安排,设计索引,形成数据库内模式。

可以用Sybase PowerDesigner工具直接建立物理数据模型(PDM),或者通过CDM / LDM转换得到。

数据库设计原则按阶段实施并形成该阶段的成果物一般符合3NF范式要求;兼顾规范与效率使用公司规定的数据库设计软件工具命名符合公司标准和项目标准数据库设计目标规范性:一般符合3NF范式要求,减少冗余数据。

高效率:兼顾规范与效率,适当进行反范式化,满足应用系统的性能要求。

紧凑性:例如能用char(10)的就不要用char(20),提高存储的利用率和系统性能,但同时也要兼顾扩展性和可移植性。

易用性:数据库设计清晰易用,用户和开发人员均能容易地理解。

设计过程规范数据库设计过程包括如下阶段:数据分析、概念设计、逻辑设计、物理设计、实施与运行维护。

activiti工作流数据库表详细介绍(23张表)

activiti工作流数据库表详细介绍(23张表)

activiti工作流数据库表详细介绍(23张表)Activiti的后台是有数据库的支持,所有的表都以ACT_开头。

第二部分是表示表的用途的两个字母标识。

用途也和服务的API对应。

ACT_RE_*: 'RE'表示repository。

这个前缀的表包含了流程定义和流程静态资源(图片,规则,等等)。

ACT_RU_*: 'RU'表示runtime。

这些运行时的表,包含流程实例,任务,变量,异步任务,等运行中的数据。

Activiti 只在流程实例执行过程中保存这些数据,在流程结束时就会删除这些记录。

这样运行时表可以一直很小速度很快。

ACT_ID_*: 'ID'表示identity。

这些表包含身份信息,比如用户,组等等。

ACT_HI_*: 'HI'表示history。

这些表包含历史数据,比如历史流程实例,变量,任务等等。

ACT_GE_*: 通用数据,用于不同场景下,如存放资源文件。

资源库流程规则表1) act_re_deployment 部署信息表2) act_re_model 流程设计模型部署表3) act_re_procdef 流程定义数据表运行时数据库表1) act_ru_execution运行时流程执行实例表2) act_ru_identitylink运行时流程人员表,主要存储任务节点与参与者的相关信息3) act_ru_task运行时任务节点表4) act_ru_variable运行时流程变量数据表历史数据库表1) act_hi_actinst 历史节点表2) act_hi_attachment历史附件表3) act_hi_comment历史意见表4) act_hi_identitylink历史流程人员表5) act_hi_detail历史详情表,提供历史变量的查询6) act_hi_procinst历史流程实例表7) act_hi_taskinst历史任务实例表8) act_hi_varinst历史变量表组织机构表1) act_id_group用户组信息表2) act_id_info用户扩展信息表3) act_id_membership用户与用户组对应信息表4) act_id_user用户信息表这四张表很常见,基本的组织机构管理,关于用户认证方面建议还是自己开发一套,组件自带的功能太简单,使用中有很多需求难以满足通用数据表1) act_ge_bytearray二进制数据表2) act_ge_property属性数据表存储整个流程引擎级别的数据,初始化表结构时,会默认插入三条记录,书生整理于网络。

工作流数据库文档(os_workflow)

工作流数据库文档(os_workflow)
entry_id
工作流编码
bigint(20)
Y
step_id
工作流当前步骤编码
int(11)
Y
action_id
工作流当前动作编码
int(11)
Y
owner
待处理人
vachar(250)
Y
start_date
发起时间
datetime
Y
finish_date
完成时间
datetime
Y
due_date
符点类型的参数值
float
Y
NUMBER_Value
整数类型的参数值
decimal
Y
调用的参数名
varchar(150)
N
item_type
参数type
tinyint(4)
Y
String_value
String类型的参数值
varchar(255)
Y
Date_value
Datetime类型的参数值
datetime
Y
Data_value
二进制类型的参数值
blob
Y
Float_Value
表名
字段名
字符类型

字符其他说明
os_wfentry
ID
工作流编码
bigint(20)
N
name
工作流名称
varchar(60)
Y
state
工作流当前的步骤
int(11)
Y
表名
字段名
字符类型

字符其他说明
os_currentstep
ID
编码
bigint(20)
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
结点类型
1人为决策,2自动处理(直接执行execute_function),3等待外部响应(例如外部WS触发),4分支,5汇总6结束结点(此结点执行时候自动终止进程)
init_function
流程初始函数
run_function
流程运行函数
save_function
流程保存函数
transit_function
list_defination(){
}
init_process(defination_id){
global user;
取得$defination,得到业务的handler,例如WorkflowProposalHandler
建立$process行记录
}
start_process(){
调用WorkflowProposalHandler->start($process)//新建业务对象,并把业务类的参数例如proposal_id放到$process[‘context’]里面
transit_function ()执行流转
sendmail其它结点调用函数
workflow.php
switch(op)
case list_defination
参数:无
WorkflowService->list_defination();
case start_process :启动
参数:defination_id
6不把可视化设计流程的工作交给最终客户,而且由设计时完成,因此不考虑流程版本更新的问题
一、工作流数据表设计
tbl_workflow_defination:工作流定义表
defination_id
流程id
defination_naห้องสมุดไป่ตู้e
流程名称
defination_handler
流程处理辅助文件,每个工作流一个文件
流程流转函数
prev_node_index
前结点序号
例如1。开始结点没有
执行前,通过此来校验一下流程
next_node_index
后结点序号
例如[同意]3,[不同意]4。尾结点或要结束的结点没有,若没有,直接调用end
executor
执行角色,组,人
role[1,2] group[1,2] user[1,2],为空由运行时决定
调用transit_thread(thread_id, $next_node_id)
Case 3:等待外部响应
修改$thread为已接收
$next_node_id=WorkflowProposalHandler-> run_function ($process,$node,$thread)
transit_thread(thread_id, $next_node_id)
<?php
class Foo{
function
Variable() {
$name = 'Bar';
$this->$name();
// This calls the Bar() method
}
function Bar(){
echo "This is Bar";
}
}
$foo = new Foo();
$funcname = "Variable";
取得$node
取得$process
取得$thread
Switch($node[‘node_type’])
Case 1:人工决策
WorkflowProposalHandler->transit_function($process,$node,$thread,$next_node_id)
修改$thread为已完成
工作流设计参考(包括PHP实现)
本文关键词:php工作流,workflow
工作流设计的工作流很少有让人满意的,即便是国内用的比较多的jbpm,用起来也会觉得很便扭。再加上PHP中没有什么好用的工作流,于是干脆自己设计一个,设计的原则如下:
1根据80/20原则,只使用wfmc模型中最符合自身应用的20%功能
}
init _thread($next_node_id);
Case 4:分支
Case 5:汇总:
Case 6:结束:
}
end_process();
list_my_process
view_process
workflow_proposal_handler.php
WorkflowProposalHandler
$foo->
$funcname();
// This calls $foo->Variable()
?>
使用前可以用method_exists来检查。
WorkflowService.php
WorkflowService
$defination
$process
$node
$thread
$input用户输入的和流程有关的变量
If($next_node_id < $ cur_node_id) { //回退
删除所有大于$next_node_id的Thread
}
init_thread($next_node_id);
Case 2:自动处理
修改$thread为已完成
If($next_node_id < $ cur_node_id) {
建立$thread
WorkflowProposalHandler-> init_function ($process,$node,$thread)
发送提醒
Case 2:自动处理
建立$thread
WorkflowProposalHandler-> init_function ($process,$node,$thread)
Case 1:人工决策
修改$thread为已接收
WorkflowProposalHandler-> run_function ($process,$node,$thread)显示表单
Case 2:自动处理
修改$thread为已接收
$next_node_id=WorkflowProposalHandler-> run_function ($process,$node,$thread)
case transit_thread :
参数:thread_id
把input收集起来,赋给WorkflowService的Input,另外还要获得thread_id
$next_node_id =得到用户选择的下一结点id
WorkflowService-> transit _thread(thread_id,$next_node_id);
WorkflowProposalHandler-> run_function ($process,$node,$thread)显示表单
Case 2:自动处理
Case 3:等待外部响应
Case 4:分支
Case 5:汇总:
Case 6:结束:
}
transit_thread(thread_id, $next_node_id){
finish_time
线程完成时间
max_time
结点规定的最长时间
state
状态
0未接收1已接收2已处理
二、常见流程
人工决策
领导传阅
部门领导审批
填写表单
结束
放弃
提交
同意
重填(退回)
不同意
完成
外部响应
发送支付信息
接收支付成功响应(外部WS触发该流程)
三、PHP设计
运行的函数由结点在设计时候决定,如果没有设定,就使用默认的函数。利用了PHP语言的以下特性
WorkflowService->init_process(defination_id);
WorkflowService->start_process();
case list_ my_thread :待处理的列表
WorkflowService->list_ my_thread();
case run_thread :
init_thread(1); //默认调用第一个结点
}
list_ my_thread (){
global user;
}
init_thread(node_index){
取得$node
取得$process
修改$process为运行到当前结点
Switch($node[‘node_type’])
Case 1:人工决策
2充分吸收国内使用jbpm开发BOSS中遇到的问题,工作流引擎只负责参数的收集和流程的流转,具体和业务的控制,交给每个流程定制的控制类去实现。
3表单采用简单的html+控制标签的方法实现
4权限和模板引擎,以及其它辅助函数直接使用办公系统自带的框架
5充分利用PHP语言的特点,流程设计是基于数据库的,程序上使用OO设计,但采用重对象的方法
取得所有前结点,如果所有前结点的Thread都结束了,调出下一结点
调用init_thread(子结点)
Case 6:结束:直接结束进程process
end_process()
}
run_thread(thread_id){
取得$node
取得$process
取得$thread
Switch($node[‘node_type’])
调用run_thread(thread_id)
Case 3:等待外部响应
相关文档
最新文档