老瓶装新酒-基于工作引擎的OA手机App开发(2)

简介:

    OA流程表单信息查询实现

    如果要实现OA流程表单信息的查询,需要理解工作引擎的表单展示机制。工作引擎它封装了一套独有的表单控件,其可以设置控件的DataField绑定数据项,例如:

    <SheetControls:SheetDataTrackLink ID="SheetDataTrackLink1" DataField="申请内容" runat="server" />  

    如上所示,控件绑定了数据项“申请内容”。


    而数据项“申请内容”来自于设计流程时的表单模板,具体的值存放在了数据库的相关表的特定字段中。比如我们在流程设计器设计了一个流程,添加数据“申请内容”,设置模板类型为“公文类”,设置模板名称为“12345”,并发布。则,数据库中会新增表“I_公文类_12345”,其中表有字段“申请内容”。

    这里我们要指出,一般地,我们将表单信息以及一些决定流程流转的关键性数据添加到流程模板(即数据库中对应的表中)。

    

    另外我们需要关注的是,数据库的表InstanceContext存放了所有的流程,每一条流程诞生的时候,都会向其插入一条记录。H3数据库的表WorkItem存放了所有的工作项,每生成一条工作项,都会向其插入一条记录。


    通过以上,我们得出流程信息查询的sql:    

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
             declare  @var_WorkFlowName nvarchar(36);
             select  @var_WorkFlowName=t.WorkflowName  from  WorkItem t  where  t.ObjectID=@pWorkItemID;
             if (@var_WorkFlowName =  '123456' )
             begin
                 select  user_. Name  as  drafter, 
             context.CreatedTime  as  draft_time, 
             unit. Name  as  draft_department,
             context.InstanceName  as  document_name, 
             case  context.Priority  when  then  '普通' when  then  '急件' when  then  '特急'  end   as  emergency, 
             I_.备注  as  remarks, 
             I_.拟稿人意见  as  comments
             from  WorkItem item
             join  InstanceContext context  on  item.InstanceId=context.ObjectID
             join  User  user_  on  user_.ObjectID=context.Originator
             join  OrganizationUnit unit  on  unit.ObjectID=context.OrgUnit
             join  I_公文类_123456 I_  on  I_.InstanceId=context.ObjectID
             where  item.ObjectID=@pWorkItemID;
             end ;

    我们首先获取流程模板的名称,然后根据不同的查询模板执行不同查询语句,获取需要展示的表单信息。

    以下我们对相关表进行解释:

    1、WorkItem,工作项表,每生成一条工作项,即在此表插入一条记录;

    2、InstanceContext,流程表,每发起一个流程,即在此表插入一条记录;

    3、User,用户表,存放所有用户信息;

    4、OrganizationUnit,部门表,存放所有部门信息;

    5、I_公文类_123456,特定流程模板表,存在流程表单信息;


    然后我们建立一张表FormField,其决定了每个流程模板应该展示的表单数据,内容如下:

wKioL1g83nizijOBAACjArflUdc720.png    字段解释如下:

    Name: 展示的名称;

    type:展示的类型;

    queryName:对应于表单查询语句的字段;

    sortedIndex:决定了表单字段展示的先后顺序;


    具体实现代码如下:

    

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
     DAL.FlowInfoManger dal =  new  DAL.FlowInfoManger();
      // 流程需要收集的表字段
      DataTable dtFormField = dal.GetFlowData(WorkItemID);
      Flow flow =  new  Flow();
      // 初始化流程id
      flow.flowguid = WorkItemID;
      // 流程的实际展示内容
      DataTable dtFormMessage =  new  DataTable();
      dtFormMessage = dal.GetFlowData(WorkItemID, procName);
             if  (dtFormMessage.Rows.Count > 0)
             {
                 foreach  (DataRow dr  in  dtFormField.Rows)
                 {
                     FormField form =  new  FormField();
                     form.name = (dr[ "Name" ] == DBNull.Value) ?  ""  : dr[ "Name" ].ToString();
                     form.type = (dr[ "type" ] == DBNull.Value) ?  ""  : dr[ "type" ].ToString();
                     string  queryName = (dr[ "queryName" ] == DBNull.Value) ?  ""  :
                         dr[ "queryName" ].ToString();
                     if  (queryName !=  string .Empty)
                     {
                         form.value = (dtFormMessage.Rows[0][queryName] == DBNull.Value) ?  ""
                             : dtFormMessage.Rows[0][queryName].ToString();
                     }
                     flow.info.Add(form);
                 }
             }


    以上则完成了表单信息的查询展示。



本文转自 许大树 51CTO博客,原文链接:http://blog.51cto.com/abelxu/1877581,如需转载请自行联系原作者

相关文章
|
30天前
|
JSON 小程序 JavaScript
uni-app开发微信小程序的报错[渲染层错误]排查及解决
uni-app开发微信小程序的报错[渲染层错误]排查及解决
460 7
|
30天前
|
小程序 JavaScript 前端开发
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
511 1
|
16天前
|
小程序 数据挖掘 UED
开发1个上门家政小程序APP系统,都有哪些功能?
在快节奏的现代生活中,家政服务已成为许多家庭的必需品。针对传统家政服务存在的问题,如服务质量不稳定、价格不透明等,我们历时两年开发了一套全新的上门家政系统。该系统通过完善信用体系、提供奖励机制、优化复购体验、多渠道推广和多样化盈利模式,解决了私单、复购、推广和盈利四大痛点,全面提升了服务质量和用户体验,旨在成为家政行业的领导者。
|
1月前
|
JavaScript 前端开发 小程序
uniapp一个人开发APP关键步骤和考虑因素
uniapp一个人开发APP关键步骤和考虑因素
121 1
uniapp一个人开发APP关键步骤和考虑因素
|
30天前
|
JavaScript 前端开发 UED
Vue与uni-app开发中通过@font-face巧妙引入自定义字体
Vue与uni-app开发中通过@font-face巧妙引入自定义字体
70 9
|
1月前
|
缓存 小程序 索引
uni-app开发微信小程序时vant组件van-tabs的使用陷阱及解决方案
uni-app开发微信小程序时vant组件van-tabs的使用陷阱及解决方案
180 1
|
13天前
|
机器人
布谷直播App系统源码开发之后台管理功能详解
直播系统开发搭建管理后台功能详解!
|
1月前
|
小程序 JavaScript API
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
这篇文章介绍了如何在uni-app和微信小程序中实现将图片保存到用户手机相册的功能。
527 0
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
|
2月前
|
移动开发 Android开发 数据安全/隐私保护
移动应用与系统的技术演进:从开发到操作系统的全景解析随着智能手机和平板电脑的普及,移动应用(App)已成为人们日常生活中不可或缺的一部分。无论是社交、娱乐、购物还是办公,移动应用都扮演着重要的角色。而支撑这些应用运行的,正是功能强大且复杂的移动操作系统。本文将深入探讨移动应用的开发过程及其背后的操作系统机制,揭示这一领域的技术演进。
本文旨在提供关于移动应用与系统技术的全面概述,涵盖移动应用的开发生命周期、主要移动操作系统的特点以及它们之间的竞争关系。我们将探讨如何高效地开发移动应用,并分析iOS和Android两大主流操作系统的技术优势与局限。同时,本文还将讨论跨平台解决方案的兴起及其对移动开发领域的影响。通过这篇技术性文章,读者将获得对移动应用开发及操作系统深层理解的钥匙。
|
23天前
|
NoSQL PHP Redis
布谷语音app源码服务器环境配置及技术开发语言
布谷语音app源码服务器环境配置及技术语言研发。。

热门文章

最新文章