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

OA流程表单信息查询实现

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

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

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

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

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

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

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

            declare @var_WorkFlowName nvarchar(36);
            select @var_WorkFlowName=t.WorkflowName from WorkItem t where [email protected];
            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 0 then ‘普通‘when 1 then ‘急件‘when 2 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 [email protected];
            end;

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

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

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

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

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

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

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

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

    字段解释如下:

Name: 展示的名称;

type:展示的类型;

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

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

具体实现代码如下:

    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);
                }
            }

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

时间: 2024-12-09 20:28:21

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

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

公司现有的OA系统是在2012年基于H3工作引擎7.3版本开发的.它自带的手机App,美观性和兼容性不好.怎么让这个老旧的系统能够跟上时代的步伐再焕发一次青春呢?这是一个亟待解决的问题. 解决问题的思路: 1.在公司严格的电脑以及软件管控下,系统的网页版还可以使用,问题出在手机App的落伍: 2.为了实现此App,我们需要构建一个App外壳,它兼容ios和android系统,用于浏览html5网页,具备响应网络请求的功能: 3.为了能够浏览OA中各种流程的详细信息,我们需要开发一个接口,能够提供

基于Html5 Plus + Vue + Mui 移动App开发(三)-文件操作(读取、保存、更新数据)

实全资讯采用基于Html5 Plus + Vue + Mui 移动App.主要实现功能包括: 实现搜索站点设置 实现搜索关键字定义 实现搜索资讯保存.删除功能. 主界面实现关键字搜索.预定义关键字搜索,下拉刷新,支持搜索结果保存.分享. 我的界面主要是展示自己保存的搜索资讯,支持删除.分享. 设置界面主要实现搜索站点.初始搜索关键字定义. 搜索站点目前支持:凤凰资讯.参考信息.腾讯资讯.百度资讯: 读取数据 /*读取内容*/ shiquan.readNews = function(callbac

基于Html5 Plus + Vue + Mui 移动App 开发(二)

界面效果: 本页面采用Html5 Plus + Vue + Mui 开发移动界面,本页面实现: 1.下拉刷新.上拉获取更多功能: 2.使用Vue 进行数据绑定: 3.使用WebView 创建打开新的界面: 源码如下: <!doctype html> <html> <head> <meta charset="UTF-8"> <title>实全科技</title> <meta name="viewpor

城管APP开发建立新的城管系统新模式

互联网+时代已经带来,为了顺应时代热潮,各大城市逐渐进行城管APP开发,城管APP软件的出现,不但增强了城市管理,强化城市公共管理领域,还可以提高城管工作效率,城管APP开发建立新的城管系统新模式. 城管APP开发需要做好以下几点 广州APP软件开发公司道屹道认为:城管APP开发的主要服务对象是政府城管部门以及人民群众,为双方搭建了一个交流沟通的平台,从而促进社会和谐发展.城管APP开发根据当前城市商贩摆摊以及社会发展情况,个性化的打造相对应的服务功能,让双方可以快速的处理城市问题,从而给广大人

互联网营销新机遇,你需要更专业的APP在线制作平台

移动互联网的快速发展日新月异,如今手机APP是各行业企业的营销利器,但是目前应用市场上的APP同质化严重,有个性和特色的APP太少.那么如何定制开发一款个性化APP应用软件呢,制作一份好的APP策划方案尤其重要.那么一份好的APP策划方案该怎么入手呢?APP在线制作的专业平台APICloud给出自己的答案,为中小企业甚至草根创业者提供了敢想敢做的新方式,促成了互联网营销很多新机遇. 当今面临很多产业转型的经济形态下,传统行业的各大中小企业措手不及,包括个体户,想追上互联网步伐,却无从下手,对AP

北京APP开发,哪个平台才是业内老炮?

在这个信息网络时代,最流行的通讯工具是手机,最受欢迎的是APP,可以说各种各样的APP帮助大家节省的大量的时间,提供给大家更好的享受,所以APP的开发,变成了最为火热的领域.大家都知道,APP的开发并不是一件易事,它包含很多方面,所以每一款APP的开发都需要耗费大量的人力物力,这其中有很多是开发软件所必由之路,所以一款帮助软件开发的有效应用北京APP开发助手APIClould应运而生. APICloud助手结合了大数据时代的特点,以云端一体的理念定位了移动应用的开发,为移动开发者从"云"

Service Mesh 是新瓶装旧酒吗?

点击下载<不一样的 双11 技术:阿里巴巴经济体云原生实践> 本文节选自<不一样的 双11 技术:阿里巴巴经济体云原生实践>一书,点击上方图片即可下载! 作者 | 李云(花名:至简) 阿里云高级技术专家 导读:在即将过去的 2019 年,Service Mesh 开源产品的成熟度虽在全球范围内没有发生质的变化,但在国内仍出现了一些值得特别关注的事件.比如:阿里巴巴在 双11 的部分电商核心应用上落地了完整的 Service Mesh 解决方案,借助 双11 的严苛业务场景完成了规模

基于Unity3D引擎制作大地图

基于Unity3D引擎制作大地图 1.下载Unity3D: http://www.devzone.cn/thread-17305-1-1.html 2.制做一张灰度图: 需求:Photoshop GIMP 先Google 搜 WorldMap-A_non-Frame.png  这个地图下载一张到你pc 然后gimp打开它, 右键图片,弹出菜单--选择--按颜色. 这张图的好处在于海洋就是几种蓝色,按照颜色分别  左键 选取这几个蓝色,按下delete键删除颜色,清理干净后如图[狗刨学习网] 然后

熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器、过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验。

熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器.过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验. 1.说一说Servlet生命周期(非常重要) Servlet生命周期包括三部分: 初始化:Web容器加载servlet,调用init()方法 只执行一次 处理请求:当请求到达时,运行其service()方法.service()自动调用与请求相对应的doXXX