泛微OA数据库维护笔记
本文介绍泛微OA系统
相关表结构,以及常用的查询、修改流程数据、导出流程数据的操作:
这里主要介绍流程的数据存放结构及如果通过流程类型获取到流程的字段信息,流程的载体分为表单和单据两类,表单和单据的区别在于:所有使用表单的流程数据存放在同一个表中,而单据每个单据对应着一张独立的数据表
1.表单
一、对于表单而言流程的数据信息存放在三个数据表中
Workflow_requestbase:该表存放了流程的基本信息:标题,创建人,创建时间,流程类型等等
Workflow_form:该表存储了流程的具体信息通过REQUESTID字段和Workflow_requestbase表关联
Workflow_formdetail:该表存放了流程的明细信息,同样通过REQUESTID字段和Workflow_requestbase表关联
二、通过流程的类型如何获取该流程使用了Workflow_form和Workflow_formdetail表中哪些字段
在Workflow_form和Workflow_formdetail表中存放了大量字段,所有使用表单的流程的字段都在这两个表中,如何获取每个流程使用了那些字段呢?
A、 找到流程的类型ID,假定为wfid
B、 找到流程用了哪个表单 select formid from workflow_base where id=wfid and isbill=’0’
C、 获得该表单用到了哪些主字段:
select (
select fieldlable from workflow_fieldlable where workflow_fieldlable.fieldid=workflow_formfield.fieldid and langurageid=7 and workflow_fieldlable.formid=workflow_formfield.formid) as name, (select fieldname from workflow_formdict where id=fieldid) from workflow_formfield where formid=上面获取的FORMID and (isdetail is null or isdetail=’’)
哪些明细字段:
select (select fieldname from workflow_formdictdetail where id=fieldid) from workflow_formfield where formid=上面获取的FORMID and isdetail=’1’
? 下面是查询出差申请流程“表单”数据的步骤:
select * from workflow_base where workflowname like '%出差申请%'
得到表单ID Formid=4 和WorkFlowID=10
select * from Workflow_requestbase where WORKFLOWID=10 and requestname like '%李四-2014-11-17%'
得到所有申请记录 以及具体的RequestID=29176
select * from Workflow_form where requestid=29176
得到具体表单内容
2.单据
对于表单而言流程的数据信息存放在三个数据表中
Workflow_requestbase:该表存放了流程的基本信息:标题,创建人,创建时间,流程类型等等
Workflow_form:该表只存放Workflow_requestbase和单据表之间的关系信息
各单据主表:该表存储了流程的具体信息通过REQUESTID字段和Workflow_requestbase表关联,如何获取该表呢:
A、 找到流程的类型ID,假定为wfid
B、 找到流程用了哪个单据 select formid form workflow_base where id=wfid and isbill=’1’
C、 通过单据ID可以获取到该单据使用的字段
Select * from workflow_billfield where billid= formid
D、 通过单据ID找到其用了那个表存储流程主信息,那个表存储流程明细信息
select tablename from workflow_bill where id= formid
select tablename from workflow_billdetailtable where id= formid
各单据主明细表:该表存放了流程的明细信息,同样通过REQUESTID字段和Workflow_requestbase表关联
? 下面是查询名片申请流程“单据”数据的步骤:
select * from workflow_base where workflowname like '%名片%'
得到表单ID Formid=-39 和WorkFlowID=ID=161
Select * from workflow_billfield where billid= -39
得到表单字段
Select b.fieldname, l.labelname
from workflow_billfield b
left join HtmlLabelInfo l
on b.fieldlabel = l.indexid and l.languageid=7
where billid = -39
得到表单字段名称
select tablename from workflow_bill where id= -39
得到主表名称
select tablename from workflow_billdetailtable where id= -39
得到明细表名称
select * from Workflow_requestbase where WORKFLOWID=161 and requestname like '%张三-2014-04-23%'
得到所有申请记录 以及具体的RequestID=4134
select * from formtable_main_39 where requestid=4134
得到表单内容
1、 流程的其他信息表结构
流程处理人情况表
Workflow_currentoperator:此表存储了流程当前未操作者,已操作者等信息
workflow_requestlog 流程处理意见表:此表存储了流程处理人处理过的审批意见
workflow_requestviewlog 流程的查看日志
? 如何查询浏览按钮的数据列表(以医药信息为例)
select * from MODEINFO where modename='医院信息'
找到FormID =-85
select * from workflow_bill where id=-85
找到表名 formtable_main_85
select * from formtable_main_85
此表即为数据
? 如何查询下拉框选项列表数据(以省份信息为例)
select * from workflow_SelectItem where fieldid=8472
查询字段的下拉选项 先找到表单中的省份字段ID =8472
? 例子:导出表单流程数据
select * from workflow_base where workflowname like '经销
申请%'
得到表单ID Formid=-41 和WorkFlowID=ID=959
Select * from workflow_billfield where billid= -41 and fieldname='wtcp'
得到表单字段
select tablename from workflow_bill where id=-41
得到主表名称 formtable_main_41
select tablename from workflow_billdetailtable where id=-41
得到明细表名称
select * from Workflow_requestbase where WORKFLOWID=959
得到所有申请记录 以及具体的RequestID=26710
select xsmbb,xsmb2 from formtable_main_41 where requestid=31245
得到表单内容
select xsmb2 from formtable_main_41_dt1 where mainid=1181
如何查字段名称
Select b.fieldname, l.labelname
from workflow_billfield b
left join HtmlLabelInfo l
on b.fieldlabel = l.indexid and l.languageid=7
where billid = -41 and l.labelname='销售目标2'
如何查“浏览按钮”的明细信息
select * from MODEINFO where modename='省份信息'
找到FormID =-85
select * from workflow_bill where id=-58
找到表名 formtable_main_85
select * from formtable_main_58 where id=2
此表即为数据
查下拉列表
select * from workflow_SelectItem where fieldid=6288
? 查询某人有哪些流程
本例子是通过查询流程的当前处理人表来实现的,如果某人没有处理过一条流程,则查不出此人有哪些流程
select distinct t.typename,b.workflowname,n.nodename
from Workflow_currentoperator w
join hrmresource r on w.userid=r.id and r.lastname='张三'
join workflow_base b on w.workflowid=b.id
join workflow_nodebase n on n.id=w.nodeid
join workflow_type t on b.workflowtype=t.id
order by typename,workflowname
? 批量设置超时
/*批量更新超时设置。Isbulidcode为是否自动生成编号,用来区分第一个节点。*/
update workflow_nodelink set nodepasshour=24,nodepassminute=0,isremind=1,
remindhour=2,remindminute=0,flowremind=1,isnodeoperator=1,isother=1,remindobjectids='30'
where workflowid =918
and isreject is null
and isbulidcode is null