O2OA教程-业务开发与设计-数据视图与数据统计

僤鯓⒐⒋嵵緔 提交于 2020-02-28 17:04:30

一、视图

View

在O2OA中,视图是展现、查询流程和内容管理数据的重要途径,也是各应用进行数据关联的工具。

入口

点系统的左上角导航->设计中心->数据中心->具体应用->视图打开。

视图的后台服务

http://applicationServer:20020/x_query_assemble_surface/jest/index.html

视图属性

基本

属性名

说明

标识

视图ID

名称

视图名称

别名

视图别名

隐藏视图

隐藏后不会在点左上角导航->应用中显示

最大行数

视图展现的时候返回数据的最多数目

每页行数

视图展现的时候每页的数据数目

可执行人

允许执行视图的人。和可执行组织同时为空的时候,所有人可执行

可执行组织

允许执行视图的组织

范围

属性名

说明

 

可以选择流程平台数据或者是内容管理平台的数据

权限

带权限:当前人员只能看到流转过的工作

忽略:当前人员可以看到符合过滤条件所有工作,但是没有流转过的不能打开

流转状态

只有选择流程平台数据的时候起作用

选择应用

只对应流程平台应用的数据

选择流程

只对应流程的数据,如果应用和流程同时选择的情,取并集

数据类型

信息类:只显示内容管理栏目或分类里文档类型设置为“信息”的数据

数据类:只显示内容管理栏目或分类里文档类型设置为“数据”的数据

全部:对文档类型无限制

选择栏目

只显示对应内容管理栏目的数据

选择分类

只显示对应内容管理分类的数据,如果栏目和分类同时选择

拟稿组织

只显示选择的拟稿组织的数据

拟稿人员

只显示选择的拟稿人员的数据

拟稿身份

只显示选择的拟稿身份的数据

隐藏视图

隐藏后不会在点左上角导航->应用中显示

时段

只显示符合时段内的数据,允许有偏移量

视图默认返回一年内的数据,如果需要返回更早时间的数据,请配置时段。

过滤

当选择“作为默认过滤条件”时,视图在执行的时候既根据该过滤条件进行过滤。

当选择“作为自定义过滤数据”时,用户可以根据配置自定义进行过滤。

路径:

平台流程填写对应的以下路径:

{
    "$work" : {
        "title" : "" , //标题
        "startTime" : "", //创建时间
        "startTimeMonth": "", //创建月份
        "completedTime": "", //完成时间
        "completedTimeMonth": "", //完成月份
        "creatorPerson": "", //拟稿人
        "creatorIdentity": "", //拟稿人身份
        "creatorUnit": "", //拟稿组织
        "creatorUnitLevelName": "", //拟稿组织层级
        "application": "", //应用ID
        "applicationName": "", //应用名称
        "applicationAlias": "", //应用别名
        "process": "", //流程ID
        "processName": "", //流程名称
        "processAlias": "", //流程别名
        "serial": "", //编号
        "activityType": "", //活动类型
        "activityName": "", //活动名称
        "activityArrivedTime": "", //活动到达时间
        "workId": "", //工作ID
        "workCompletedId": "", //已完成工作ID
        "job": "", //JOB的ID(job)
        "completed": "", //是否已完成(completed)
    },
    "subject" : "", //标题
    "identity1" : [{ //身份/人员/组织/职务/群组 的存储形式
        {
            "name": "李四",  //身份名称,不唯一
            "unique": "23dd1b53-feed-485d-8c9c-1a4e64ff58a2", //身份唯一标识
            "description": "", //身份描述
            "distinguishedName": "李四@23dd1b53-feed-485d-8c9c-1a4e64ff58a2@I", //身份全称
            "person": "李四@lisi@P", //人员
            "unit": "开发部@kfb@U",  //组织
            "unitName": "开发部",   //组织名称, 不唯一
            "unitLevel": 2,         //组织层级
            "unitLevelName": "浙江兰德纵横/开发部", //组织层级名
            "orderNumber": 24920439 //排序号
        }
        ...
    }] 
    ...
}

如:流程ID "$work.workId"

标题填写:subject

身份dn填写:identity1.0.distinguishedName (数组用 “.0” 来表示下标)

内容管理填写对应的以下路径:

{
    "$document" : {
        "title" : "", //标题
        "publishTime" : "", //发布时间
        "creatorPerson" : "", //拟稿人
        "creatorIdentity" : "", //拟稿人身份
        "creatorUnitName" : "", //拟稿组织
        "creatorTopUnitName" : "", //拟稿顶级组织
        "appId" : "", //栏目ID
        "appName" : "", //栏目名称
        "categoryId" : "", //分类ID
        "categoryName" : "", //分类名称
        "categoryAlias" : "", //分类别名
        "docid" : "", //文档ID
    },
    "subject" : "", //标题
    "identity1" : [{ //身份/人员/组织/职务/群组 的存储形式
        {
            "name": "李四",  //身份名称,不唯一
            "unique": "23dd1b53-feed-485d-8c9c-1a4e64ff58a2", //身份唯一标识
            "description": "", //身份描述
            "distinguishedName": "李四@23dd1b53-feed-485d-8c9c-1a4e64ff58a2@I", //身份全称
            "person": "李四@lisi@P", //人员
            "unit": "开发部@kfb@U",  //组织
            "unitName": "开发部",   //组织名称, 不唯一
            "unitLevel": 2,         //组织层级
            "unitLevelName": "浙江兰德纵横/开发部", //组织层级名
            "orderNumber": 24920439 //排序号
        }
        ...
    }] 
    ...
}

如:文档ID填写 "$document.docid"

标题填写:subject

身份dn填写:identity1.0.distinguishedName (数组用 “.0” 来表示下标)

列属性

属性

说明

列标题

表格的标题

列名

列名,当需要操作数据的时候要用到(比如嵌入到表单中选择数据的时候)

默认值

列值为空时的默认值

打开文档

点击该列的时候,是否打开文档

数据路径

查看本章-视图属性-过滤-路径的介绍

排序

该列是否排序,只有第一个排序列有效

分类

该列是否分类,只能有一个分类列

隐藏

显示的时候,该列是否隐藏

组织对象

如果选是,那么只显示数组第一个值的 name 属性

HTML值

如果选择是,则作为单元格的innerHTML显示

显示脚本

可以通过脚本对列值进行计算。

this.value:为列原来的值

this.entry.data: 该行所有列的值

显示脚本最终需要 return 放回值

视图的使用

在表单、页面中嵌入视图

可以在表单中使用“嵌入视图”组件

选择视图的数据到表单

在表单中使用“选择视图”组件,可以进行流程、内容管理分类直接的数据关联。

当 选择结果处理 选择 “赋值”的时候:

上图中的 field_1 为本表单的组件标识,column_1 为视图的列名。

当用户选择视图后,会将选中行 column_1 列的值赋值给 field_1 。

当 选择结果处理 选择 “脚本”的时候,可以通过 this.target.selectedData 来获取用户选择行的数据。数据格式如下:

{[
  bundle : "xxxx", //CMS文档Id/流程jobId
  data : {  //列数据
    column1Name : column1Value, //第一列的列名,第一列的列值
    column2Name : column2Value, //第二列的列名,第二列的列值
    ...
  },
  ...
]}

在脚本中的使用

可以查看API的 view章节进行学习,点击打开链接

二、查询语句

Statement

查询语句是建立在数据表基数上的查询语句配置。配置查询语句后,在应用中可调用执行。

入口

点系统的左上角导航->设计中心->数据中心->具体应用->查询配置打开

查询语句的后台服务

http://applicationServer:20020/x_query_assemble_surface/jest/index.html

创建查询配置

1、创建查询配置;

2、选择语句类型和数据表;

3、编写查询语句,保存

查询语句

语法

查询语句用的是JPA JPQL语句,如 select o from tableName o where o.name='zhangsan'

了解JPQL语句可以点击链接查看:https://www.objectdb.com/java/jpa/query/jpql/structure

动态传参

查询语句中的where语句的值可以使用json传入

如:

查询语句的设计为 select o from tableName o where o.name=:n

在调用查询语句的时候传入 json

{
    "n" : "zhangsan"
}

则 最终在后台拼接成的语句为

select o from tableName o where o.name='zhangsan'

 

了解JPQL语句动态传参可以点击链接查看:https://www.objectdb.com/java/jpa/query/parameter

使用

需要编写脚本去使用查询语句

方法一

o2.Actions.get( "x_query_assemble_surface" ).executeStatement(
    statementFlag, //语句id、语句名称或语句别名
    page, //页码,数字
    size,  //每页条数
    data, //请求的json
    function(json){
        //json为执行結果
    },
    function(xhr){ 
        //如果返回错误,在这里处理
    },
    async //同步还是异步
)

例如:现在已有一个查询语句配置select o from student o where o.class=:class,存储的别名是 selectStudent,取第一页的10条,那么方法如下:

o2.Actions.get( "x_query_assemble_surface" ).executeStatement(

"selectStudent",1,10,{

class : "01计算机一班"

},function(json){

//json 为返回的结果

}

)

方法二

var action = new this.Action( "x_query_assemble_surface", {
    executeStatement:{ //服务命名1,自定义
        "uri": "/jaxrs/statement/{flag}/execute/page/{page}/size/{size}", //服务地址1,形如 /jaxrs/...
        "method": "POST" //请求方法,包括 GET POST PUT DELETE
    }
);
action.invoke({
    "name": "executeStatement", //自定义的服务名
    "parameter": {
        "flag": statementFlag, //语句id、语句名称或语句别名
        "page" : page, //页码,数字
        "size" : size //每页条数
    },  //uri参数
    "data": {  }, //请求的正文
    "success": function(json){ //服务调用成功时的回调方法,json 是服务返回的数据
        //这里进行具体的处理
    }.bind(this),
    "failure" : function(xhr){ //服务调用失败时的回调方法,xhr 为 XMLHttpRequest 对象
        //这里进行具体的处理
    },
    "async" : true, //同步还是异步,默认为true
});

例如:现在已有一个查询语句配置select o from student o where o.class=:class,存储的别名是 selectStudent,取第一页的10条,那么方法如下:

var action = new this.Action( "x_query_assemble_surface", {
    executeStatement:{ //服务命名1,自定义
        "uri": "/jaxrs/statement/{flag}/execute/page/{page}/size/{size}", //服务地址1,形如 /jaxrs/...
        "method": "POST" //请求方法,包括 GET POST PUT DELETE
    }
);
action.executeStatement({
    "name": "executeStatement", //自定义的服务名
    "parameter": { //uri参数
        "flag": selectStudent, //语句id、语句名称或语句别名
        "page" : 1, //页码,数字
        "size" : 10 //每页条数
    },  
    "data": { //请求的正文
        class : "01计算机一班"
     }, 
     "success" : function(json){
         //json 为返回的结果
     }
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!