页面树结构
转至元数据结尾
转至元数据起始

正在查看旧版本。 查看 当前版本.

与当前比较 查看页面历史

« 前一个 版本 4 下一个 »

审核流程使用说明

1      概述

在产品的售前、实施项目中,经常会有客户提出流程化的数据填报审核需求。为了满足不同项目不同客户的数据填报审核需求,Smartbi产品新增了DataAuditing扩展包,它通过图形化的配置界面,将流程与数据填报报表关联在一起,并按业务需求设计审核步骤,减少项目实施的工作。

DataAuditing的审核流程,主要针对企事业单位的数据填报审核需求,支持多级汇总。对于有些项目提出的单条数据审核,不在支持的范围内。对于日程OA的审核需求,只能处理最简单的无分支流程,对会签、条件分支、多路分支等都不能支持,也不能支持同一个流程存在新旧版本实例。

 

2      流程示例

本章通过几个流程示例演示审核流程的功能。

2.1       简单数据填报审核流程

本实例演示一个简单的数据填报审核流程,具体场景如下:由财务人员每月发起并填报一份现金流量表,并报送到总经理查看审批。在演示数据填报、审核的同时,演示数据校验功能。

具体步骤如下:

2.1.1             准备用户

在用户管理中准备财务经理、总经理两个用户,并相应的建立并赋予财务经理角色、总经理角色。对这两个角色,都赋予电子表格的操作权限和所有资源的引用权限。

 

2.1.2             准备回写表

使用mysql客户端或者其它第三方工具,连接Smartbi内置的mysql回写库(writedb),在其中新建t_balance表,用于存储现金流量表的数据。

字段名称

字段类型

字段说明

period

char(6)

填报的年月

metricid

Varchar(20)

填报的科目

val

Double

填报的数值

SQL: CREATE TABLE t_balance(period CHAR(6),metricid VARCHAR(20),val DOUBLE) ENGINE=InnoDB DEFAULT CHARSET=gbk

在数据库中创建好表后,在Smartbi系统中,找到“回写”数据源,通过右键的“数据库管理”功能,将t_balance表引入到系统中。

 

2.1.3             准备参数

现金流量表是按年月填报的,因此需要准备一个填报年月的参数。基于“SYSTEM知识库”这个数据源新建参数,控件类型选择频度日期控件,频度类型选择月,默认值为静态值。

 

 

2.1.4             准备查询

新建一个SQL查询,选择“回写”数据源,输入SQL语句:SELECT period,metricid,val from t_balance where peroid=%填报年月%,其中填报年月是上一步准备的参数,从左侧节点拖入。点击工具栏上的“高级设置”按钮,在弹出的窗口中,设置缓存策略为“禁止缓存”。

 

 

 

2.1.5             制作可回写的电子表格

在Excel中,使用Smartbi插件登录,制作一张电子表格。表样中,A列为资金项目,B列为编码,C列为发生额。操作步骤如下:

1)      从右侧的数据集面板中找到上一步创建的查询,将val字段拖动到C4、C5、C6、C8、C9、C10、C11单元格,并分别设置单元格的过滤条件,metricid与当前行的B列的值对应。

 

2)      设置C4、C5、C6、C8、C9、C10、C11单元格的填报属性为允许修改,类型是数字。

 

3)      将B2、C2单元格合并,并设置为引用参数填报年月的值来显示

 

4)      点击工具栏上的回写规则按钮,在弹出窗口中设置回写规则。数据库选回写,表选择前面导入的t_balance,在列出的字段中,period对应填报年月参数,metricid对应B4单元格,val对应C4单元格。通过复制按钮,复制多条回写规则,分别对应C5、C6、C8、C9、C10、C11单元格。

 

5)      新建一个sheet2页,在A列输入校验规则。这里输入Sheet1!C10>Sheet1!C5、Sheet1!C9>Sheet1!C10两条规则。

 

之后发布报表到服务器,命名为“现金流量表”。

 

2.1.6             制作流程

通过定制主界面的“定制流程”进入流程制作窗口。电子表格选择上一步建立的电子表格“现金流量表”,流程参数选择 “填报年份”,校验规则所在Sheet输入“Sheet2”

 

点击下一步,进入下一个界面,设置流程节点。节点1是财务填报,操作选择“财务经理”角色,节点类型是填报(第一个节点一定都是填报),操作按钮选择“填报”(必选)、“校验”、“上报”(必选)。

 

点击“+”新增一个流程节点,流程名称输入“总经理审核”,操作者选择“总经理”角色,节点类型是“审核”,操作按钮选择“校验”、“审核”(必选)、“回退”

 

点击保存按钮保存流程定义。

 

2.1.7             开始流程流转

1)      财务经理填报

使用财务经理登录系统,打开“现金流量表”这个电子表格,参数选择“201701”,填写C5、C6、C8、C9、C10、C11各个回写单元格的值。填写完成后,点击“保存”按钮,启动流程。启动流程后,会出现流程相关按钮,并显示当前的流程状态“财务填报”。

 

点击校验按钮,可以使用Sheet中的校验公式来校验数据。如果校验失败,则弹出校验失败的规则,并使用红色的底色标示相关单元格。

 

调整数据后,再次点击保存按钮保存数据,并点击“上报”按钮,将流程提交到下一节点。此时弹出对话框显示已上报,并且流程状态已经更新为下个节点“总经理审核”。

 

点击流程状态“总经理审核”,可以进入图形化的流程状态显示界面。

 

点击“查看流程日志”按钮,可以查看流程的日志信息。

 

 

2)      总经理审核

使用总经理用户登录系统,可以在主界面右上角看到1条待办任务提醒。点击图标进入待办列表界面

 

双击任务打开“现金流量表”,并显示相关的流程按钮。点击“审核”按钮可以完成审核;点击回退按钮,将流程回退到财务经理那里去修改填报,点击“查看流程日志”按钮查看日志,点击“备注”按钮修改备注信息,点击“总经理审核”流程状态,进入图形化的流程状态列表。

 

点击“审核”后,此份2017年1月的流程流转完毕,流程结束。

 

可以在已办列表中查看已处理过的流程。

 

 

2.2       汇总的审核流程

本实例演示一个带汇总的审核流程,具体场景如下:每年年初,各个部门都要填写自己的年度管理费用预算,因此海口、深圳、厦门这三个部门的助理填写了预算表,并送各自的部门经理审批;各个部门的经理审批通过之后,在华南区经理这里进行汇总,再提交到总部的财务经理审核、最后送总经理审核,完成整个预算流程。如图

 

具体步骤如下:

2.2.1             准备用户

在用户管理中需要准备海口用户、海口经理、深圳用户、深圳经理、厦门用户、厦门经理、华南区经理、财务经理、总经理九个用户,其中财务经理、总经理已经在上一个例子中建立,无需重复建立。相应的,需要建立填报角色、办事处经理、区域经理三个角色。其中海口用户、深圳用户、厦门用户属于填报角色,海口经理、深圳经理、厦门经理属于办事处经理角色。对于这三个角色,都赋予电子表格的操作权限和所有资源的引用权限。

 

 

 

 

2.2.2             准备回写表

使用mysql客户端或者其它第三方工具,连接Smartbi内置的mysql回写库(writedb),在其中新建t_budget表,用于存储预算表的数据。

字段名称

字段类型

字段说明

YEAR

char(4)

填报的年份

deptid

Varchar(20)

填报的部门ID

metricid

Varchar(20)

填报的科目

val

Double

填报的数值

SQL: CREATE TABLE t_budget (YEAR CHAR(4), deptid VARCHAR(20), metricid VARCHAR(20), val DOUBLE) ENGINE=InnoDB DEFAULT CHARSET=gbk

在数据库中创建好表后,在Smartbi系统中,找到“回写”数据源,通过右键的“数据库管理”功能,将t_budget表引入到系统中。

 

2.2.3             准备参数

年度管理费用预算是按年按部门填报的,因此需要准备一个填报年月的参数和一个部门参数。基于“SYSTEM知识库”这个数据源新建“填报年份”参数,控件类型下拉列表,为了方便起见,备选值和默认值都是静态值。

 

 

基于“SYSTEM知识库”这个数据源新建“填报机构”参数,控件类型下拉树。备选值的SQL为:select g.c_orgid as orgid,g.c_groupalias as groupname from t_group g,t_group pg where pg.c_orgid=? And g.c_pgroupid=pg.c_groupid

默认值去当前用户所在的用户组,SQL为:select c_orgid as orgid,c_groupalias as grouname from t_group where c_orgid=%CurrentUserDefaultDepartmentID()%。其中CurrentUserDefaultDepartmentID是系统的内置函数,从左侧资源树上拖入。

根节点的SQL和默认值SQL相同。

自定义父子关系选择orgid字段。

 

 

 

 

2.2.4             准备查询

新建一个SQL查询,选择“回写”数据源,输入SQL语句:SELECT YEAR,deptid,metricid,val from t_budget where YEAR=%填报年份% and deptid= %填报机构% order by metricid asc,其中填报年月和填报机构是上一步准备的参数,从左侧节点拖入。点击工具栏上的“高级设置”按钮,在弹出的窗口中,设置缓存策略为“禁止缓存”。

 

 

 

2.2.5             制作可回写的电子表格

在Excel中,使用Smartbi插件登录,制作一张电子表格。表样中,A列为费用明细,B列为编码,C列为预算金额。操作步骤如下:

1)      从右侧的数据集面板中找到上一步创建的查询,将val字段拖动到C5、C6、C7、C8、C9、C10、C11、C12单元格, ,并分别设置单元格的过滤条件,metricid与当前行的B列的值对应。

 

2)      设置C5、C6、C7、C8、C9、C10、C11、C12单元格的填报属性为允许修改,类型是数字。

 

3)      将B2、C2单元格合并,并设置为引用参数填报机构的值来显示,将B3、C3单元格合并,并设置为引用参数填报年份的值来显示

 

4)      点击工具栏上的回写规则按钮,在弹出窗口中设置回写规则。数据库选回写,表选择前面导入的t_budget,在列出的字段中,YEAR对应填报年月参数,deptid对应填报机构参数,metricid对应B5单元格,val对应C5单元格。通过复制按钮,复制多条回写规则,分别对应C6、C7、C8、C9、C10、C11、C12单元格。

 

之后发布报表,命名为“管理费用预算表”。

 

2.2.6             制作流程

通过定制主界面的“定制流程”进入流程制作窗口。电子表格选择上一步建立的电子表格“管理费用预算表”,汇总相关机构参赛选择“填报机构”,流程参数选择 “填报年份”。

 

点击下一步,进入下一个界面,设置流程节点。节点1是基层填报,操作选择“填报”角色,节点类型是填报(第一个节点一定都是填报),操作按钮选择“填报”(必选)、 “上报”(必选)。

 

点击“+”新增一个流程节点,流程名称输入“办事处经理审核”,操作者选择“办事处经理”角色,节点类型是“审核”,操作按钮选择“校验”、“审核”(必选)、“回退”

 

点击“+”新增一个流程节点,流程名称输入“区域经理汇总”,操作者选择“区域经理”角色,节点类型是“汇总”,操作按钮选择“汇总”(必选)、“上报”(必选)、“回退”

 

点击“+”新增一个流程节点,流程名称输入“财务经理审核”,操作者选择“财务经理”角色,节点类型是“审核”,操作按钮选择“审核”(必选)、“回退”

 

点击“+”新增一个流程节点,流程名称输入“总经理审核”,操作者选择“总经理”角色,节点类型是“审核”,操作按钮选择“审核”(必选)、“回退”

 

点击保存按钮保存流程定义。

 

2.2.7             设置汇总逻辑

由于流程中存在汇总,需要对业务数据做汇总处理逻辑,因此需要通过编写宏来实现。在流程定义上右键,编辑宏,在宏界面中,新建客户端模块,选择对象是WORKFLOW,事件是“执行汇总之前”。输入以下脚本

 

function main(spreadsheetReport, currentNode) {

    var p1 = spreadsheetReport.paramPanelObj.findParamByName('填报机构');

    var p2 = spreadsheetReport.paramPanelObj.findParamByName('填报年份');

    var util = jsloader.resolve("freequery.common.util");

    //删除已有的汇总

    var sql = "delete from t_budget where YEAR='" + p2.value + "' and deptid='" + p1.value + "'";

    var ret = util.remoteInvoke("DataSourceService", "executeUpdate", ["DS.回写", sql]);

    if (ret && ret.succeeded) {

        //计算汇总

        var sql = "insert into t_budget(YEAR,deptid,metricid,val) " +

            "select '" + p2.value + "','" + p1.value + "',metricid,sum(val) " +

            " from t_budget where YEAR='" + p2.value + "' and deptid<>'" +p1.value

            + "'  group by metricid ";

        var ret = util.remoteInvoke("DataSourceService", "executeUpdate", ["DS.回写", sql]);

        if (ret && ret.succeeded) {

            spreadsheetReport.doRefresh();

            return true;

        }

    }

}

 

2.2.8             开始流程流转

1)      深圳用户进行基层填报

使用深圳用户登录系统,打开“管理费用预算表”这个电子表格,填报年份选择“2017”,填报机构使用默认值,并填写C5、C6、C7、C8、C9、C10、C11、C12各个回写单元格的值。填写完成后,点击“保存”按钮,启动流程。启动流程后,会出现流程相关按钮,并显示当前的流程状态“基层填报”。

 

点击“上报”按钮,完成当前填报工作,提交到下一个节点。

2)      深圳经理进行办事处经理审核

使用深圳经理用户登录系统,可以看到主界面右上角已经存在待办任务。点击待办任务,进入待办列表。

 

双击打开管理费用预算表,并显示相关的流程按钮。点击“审核”按钮可以完成审核;点击回退按钮,将流程回退到上一步去修改填报,点击“查看流程日志”按钮查看日志,点击“备注”按钮修改备注信息,点击“办事处经理审核”流程状态,进入图形化的流程状态列表。

 

点击“审核”按钮,完成审核,流转到下一步。

3)      区域经理汇总

使用华南区经理用户登录系统,可以看到主界面右上角已经存在待办任务。点击待办任务,进入待办列表。

 

双击打开管理费用预算表,并显示相关的流程按钮。点击“汇总”按钮可以进行汇总处理;点击回退按钮,将流程回退到上一步去。

 

这时候华南区的数据还没有汇总上来。点击“汇总”按钮,可以看到当前只有深圳完成了填报,海口和厦门的用户还没有提交,因此完成不了汇总。

4)      使用海口用户和厦门用户进行基层填报

分别使用海口用户和厦门用户进行填报,同1)的操作,不再赘述

5)      使用海口经理和厦门经理进行办事处经理审核

分别使用海口经理和厦门经理进行办事处审核,同2)的操作,不再赘述

6)      区域经理汇总

再次使用华南区经理登录,进入待办任务,双击打开“管理费用预算表”。点击“汇总”按钮,这个时候可以发现所有的子机构已经填写完成,点确定完成汇总工作。

 

执行后,可以看见华南区的汇总数据了。点击“上报”按钮,提交到下一个节点。

7)      财务经理审核

使用财务帐号登录系统,进入待办任务,双击打开“管理费用预算表”。点击“审核”按钮审核数据。

8)      总经理审核

使用总经理登录系统,进入待办任务,双击打开“管理费用预算表”。点击“审核”按钮审核数据。审核后完成这个2017年的管理费用预算审核流程结束

 

2.3       使用导入功能辅助填报

对2.2的流程示例进行修改,增加了导入Excel的功能,辅助用户进行填报。

 

2.3.1             新建Excel导入模版

在定制主界面,新建“Excel导入模版”。数据源选择“回写”,回写表选择上一个示例导入的“t_budget”,sheet名填“Sheet1”,起始行选择行号2,结束行选择“直到空行”,其它选项使用默认值

 

列设置中,YEAR绑定上一个示例创建的“填报年份”参数,deptid绑定上一个示例创建的“填报机构”参数,metricid绑定Excel的B列,val绑定Excel的C列。

 

设置后保存为“管理费用导入模版”

 

2.3.2             修改电子表格,绑定Excel导入模版

在Excel的Smartbi插件中,打开上一个示例创建的“管理费用预算表”,点击“页面设置”,在“Excel导入模版”中,通过绑定按钮,挑选上一步创建的“管理费用导入模版”。修改完成后执行发布,保存报表。

 

 

2.3.3             修改流程,放开导入操作

编辑上一步示例中的“管理费用预算审批流程”,修改第一个流程节点,将“导入”勾选,然后保存。

 

 

2.3.4             准备Excel文件

新建一个空白的Excel文件,包含3列,分别是“项目编号”、“项目描述”、“项目金额”。从第二行开始,填写要导入的数据。填写之后,保存Excel。

 

 

2.3.5             执行导入

使用深圳用户登录系统,打开“管理费用预算表”,切换到2016年,点击工具栏上的“Excel导入”按钮

 

在弹出的新窗口中,“填报年份”和“填报机构”参数已经从电子表格中带入。选择上一步保存的Excel文件,执行导入。

 

关闭窗口回到电子表格界面,执行刷新按钮,可以看到Excel中的数据已经加载进来。点击“保存”按钮,启动流程。后续的流程流转和上一个示例相同,不再赘述。

 

3      功能说明

3.1       数据集制作和电子表格制作

参考Wiki相关文档。

3.2       流程定义

流程定义的入口有两个,一个是在定制管理的面板菜单中,另外一个是在电子表格的右键菜单中。

 

流程定义界面包括流程基本信息定义和流程节点定义两个步骤。

 

    • 电子表格id:
      选择用来展示审核数据、回写数据的电子表格。
      电子表格可以多选,意思是这些电子表格使用相同的审核流程定义。

一个电子表格只能绑定一个流程,新的绑定设置会覆盖旧的绑定设置。

    • 汇总相关的机构参数:
      如果数据审核中需要从下而上汇总数据,则需要选择一个和机构参数,而且此参数的结构需要和用户管理中的用户组结构相同,否则无法正确汇总。一般情况下,机构参数的参数类型为下拉树,而且真实值为用户组的组编号,显示值为用户组的name。通常情况下,机构参数还需要与当前用户关联,只显示当前用户所属机构及下级机构。配置如下图:

 

机构参数的可选范围,是已选电子表格中含有的参数。如果电子表格是多选,则是这些电子表格中的公有参数
机构相关参数和流程相关参数不能同时为空。

    • 流程的相关参数:
      用于唯一标识每一份审核的数据。常见的数据审核相关参数是时间,例如年份参数、年月参数、季度参数等。而对于报销单、请假单等OA应用,则需要选择单号参数。

流程相关参数的可选范围,是已选电子表格中含有的参数。如果电子表格是多选,则是这些电子表格中的公有参数。

流程相关参数和机构相关参数不能同时为空。

    • 校验规则所在的Sheet:
      输入校验规则所在的Sheet页名称。如果不填则校验功能无法生效。
    • 自启动配置

类似计划任务,用于自动启动流程。配置后,自动生成对应任务和计划。当计划任务运行时,对于机构参数,按第一个节点的用户迭代;对于其它参数,取默认值。

    • 每个sheet页一个流程

通常情况下,每个电子表格的多个sheet页数据,在相同参数下视为同一份审核数据,在整个审核过程中只有一个审核状态。

而勾选了“每个sheet页一个流程”选项后,每个sheet页的数据被视为一份独立的审核数据,有单独的审核状态和流转过程。

 

    • 流程节点名称:用于标识每一步流程的节点名称
    • 操作者:当前流程允许的操作人。可以选择具体用户、用户组或者角色
    • 报表操作:当报表流转到这个节点的时候,报表上允许的操作,与电子表格展示界面上的功能按钮对应。
    • 流程操作:在每一个流程步骤中,【上报】、【审核】、【发布】这三个用于控制流程向下流转的功能按钮,必须选择一个,而且只能选择一个

电子表格的右键菜单上,除了【新建流程】,还有【绑定流程】和【取消绑定】功能。

    • 绑定流程:为当前电子表格选择一个已有的流程定义。如果流程定义中已经选择参数,而且当前电子表格也有相同的参数,则绑定成功;如果流程定中的参数在当前电子表格中不存在,则提示用户参数不同,绑定失败。
    • 取消绑定:取消当前电子表格的绑定流程

3.3       流程启动

流程定义好以后,要启动流程开始流转,有三种操作方式。

    • 方式1:在主界面右上角,点击【待办】菜单,在显示的界面中,点击【待办流程】选项卡,双击要启动的流程,跳转打开流程对应的电子表格,选择相应参数后,点击工具栏上的【保存】按钮,保存回写内容的同时启动流程。
    • 方式2:和方式1类似,直接打开已经绑定流程的电子表格,选择相应参数后,点击工具栏上的【保存】按钮,保存回写内容的同时启动流程
    • 方式3:在流程定义中配置了自启动相关信息,则由定时任务触发启动。

对于同一个报表,在相同的参数情况下,只能有一份正在流转的审核流程。因此,当上面三种方式之一启动之后,其它方式无法启动相同参数对应的流程。

3.4       流程待办

启动了流程之后,流程开始流转。在主界面右上角,点击【待办】菜单,在显示的界面中,点击【待办】选项卡,可以看到当前用户的待办任务。双击待办任务,打开对应的电子表格,并传递待办任务对应的参数到电子表格中。

 

 

切换到【已办任务】选项卡,可以查看当前用户已经处理过的流程。

切换到【我的流程】选项卡,可以查看所有当前用户可以发起的流程(即流程定义中第一个节点包含当前用户)。

3.5       流程流转操作

流程的流转是通过电子表格展示时工具栏上的按钮来控制的。

 

 

1)      导入Excel

要使用【导入Excel】功能,需要先制作一份Excel导入模版,并在Excel中将该模版与电子表格关联。

 

绑定了导入模版之后,打开电子表格,界面上才有相应的按钮。点击按钮后,跳转到Excel模版的执行界面,同时传递当前所有参数的值,赋给Excel模版上的绑定参数。

2)      保存

【保存】按钮用于将当前数据按回写规则回写到数据库表中。同时,对于当前参数对应的审核数据还没有启动流程的情况,启动审核流程。流程启动后,当前流程状态对应的操作按钮会处于可用状态。

3)      校验

要使用【校验】按钮对数据进行校验,需要在制作电子表格的时候,用单独一个Sheet页的A列编写校验规则,并在流程定义的时候指定这个sheet页的名称。校验规则使用Excel的布尔表达式,例如“Sheet1!A2=Sheet1!B2+Sheet1!C2”,支持跨Sheet页取数,但不支持跨电子表格取数。

 

使用【校验】按钮后,会将当前Sheet页相关的校验不通过的单元格,在界面上用红色标识,并弹出提示。

 

4)      汇总

如果流程中含有【汇总】节点,且流转到该节点后,【汇总】按钮用。点击【汇总】,弹出窗口显示下级机构的上一个节点的审核情况。如果所有下级机构上个节点都已经完成,则可以点击【确定】按钮。确定之后,本节点的【提交】、【审核】、【发布】这几个流程相关按钮才可以使用。

5)      提交

执行【提交】操作,流程流转到下一节点

6)      审核

执行【审核】操作,流程流转到下一节点

7)      回退到开始

执行【回退到开始】操作,流程流转退回到第一个节点

8)      回退到上一步

执行【回退到上一步】操作,流程流转退回到上一节点

9)      发布

执行【发布】操作,流程流转到下一节点。实际情况中,【发布】往往是最后一个节点。

10)    填写备注。

弹出窗口填写备注信息

11)    查看流程日志

点击【查看流程日志】按钮,显示每一步流程操作的操作步骤和备注信息

 

12)    查看流程定义

电子表格的工具类上,审核功能操作按钮后面,显示当前参数标识的审核数据对应的流程状态,点击流程状态,显示整个流程步骤,并用红色标识当前所处的步骤

 

 

3.6       流程监控

要使用流程监控功能,必须先拥有【流程监控】的操作权限,如下图。

 

拥有流程权限后,在主界面右上角的下拉菜单中,可以看见【流程监控】菜单。点击菜单,进入流程监控主界面。在流程监控界面中,通过查询选择要监控的流程,展示流程对应的参数。不选择参数,展示所有的和当前流程相关的流程实例;选择参数,则查询展示与参数值相关的流程实例。

 

3.7       流程上的宏

宏事件往往用于帮助用户对数据进行处理。例如有些用户执行汇总的时候,需要执行复杂的存储过程进行数据汇总;或者在发布的时候,将数据从一个库表复制到另外一个库表;或者用户需要将当前流程的审核状态同步到业务库中,这些需求都可以通过宏来实现。

在流程定义上,右键编辑宏,可以进入到流程宏的编辑界面。流程只支持客户端宏,不支持服务器端宏。流程宏基本上与流程操作按钮对应,且按执行时间,分为执行按钮操作之前和执行操作按钮之后触发。流程支持的宏包括:

    • beforeCommit:执行提交之前
    • afterCommit:执行提交之后
    • beforeVerify:执行校验之前
    • afterVerify:执行校验之后
    • beforeSummary:执行汇总之前
    • afterSummary:执行汇总之后
    • beforeAudit:执行审核之前
    • afterAudit:执行审核之后
    • beforeBackToPre:执行回退上一步之前
    • afterBackToPre:执行回退上一步之后
    • beforeBackToStart:执行回退到开始之前
    • afterBackToStart:执行回到到开始之后
    • beforeRelease:执行发布之前
    • afterRelease:执行发布之后

特别的,在before类型的事件中,可以针对操作做一些条件判断,例如对业务库进行检查,当不满足条件的时候,可以通过抛出异常(throw “error”)的方法,阻止按钮操作的执行。

 

3.8       权限控制

要新建流程定义,需要【流程定义】操作权限,位于【定制管理】-》【新建分析】目录下。

 

另外,流程定义属于资源,本身受资源权限控制。

 

3.9       其它功能

流程定义支持资源导入、导出操作,支持在资源上复制、拖动换目录,支持影响性分析和血统分析。具体操作参考Wiki相关文档

 

4      特殊场景

4.1       业务库中查询已经发布的数据

很多情况下,除了审核流程相关的用户可以看到未经过审核的数据,其它用户是不允许查询这些未审核数据的。而在业务库中,这两种数据往往混合在一起存放。这个时候需要在查询中加上对流程状态的判断。可是由于流程状态是存在于知识库中的,跨库的查询是无法支持的。

遇到这种情况,可以由实施人员,在发布事件中编写宏代码,使用DataSourceService的executeUpdate方法,执行sql语句或者执行存储过程,将流程状态同步到业务库中。

var util = jsloader.resolve("freequery.common.util");

var ret = util.remoteInvoke("DataSourceService", "executeUpdate", ["DS.数据源名称", "update XXXXX"]);

 

4.2       发布时将数据写入另一个库

有些时候,用户要求审核前的数据和审核后的数据不能同库。这和3.1的处理类似,可以由实施人员,在发布事件中编写宏代码,使用DataSourceService的executeUpdate方法,执行sql语句或者执行存储过程,将审核后的数据同步到业务库中。

 

4.3       汇总时执行运算逻辑

系统中的【汇总】操作,只是做了一个状态标志的处理,并没真正的对业务数据做汇总处理。业务数据的汇总处理逻辑,往往逻辑复杂且不尽相同。

因此,可以由实施人员,在流程的汇总事件中编写宏代码,使用DataSourceService的executeUpdate方法,执行sql语句或者执行存储过程,完成响应的汇总处理。示例代码如下:

var p1 = spreadsheetReport.paramPanelObj.findParamByName('DeptTree');

var p2 = spreadsheetReport.paramPanelObj.findParamByName('日期');

var util = jsloader.resolve("freequery.common.util");

//删除已有的汇总

var sql = "delete from factyear where dateid='" + p2.value + "' and deptid='" + p1.value + "'";

var ret = util.remoteInvoke("DataSourceService", "executeUpdate", ["DS.回写", sql]);

if (ret && ret.succeeded) {

    //计算汇总

var sql = "insert into factyear (deptid,dateid,metricid,val) " +

        "select '" + p1.value + "','" + p2.value + "',metricid,sum(val) " +

        " from factyear where dateid='" + p2.value + "' and deptid<>'" + p1.value +

        "'  group by metricid ";

 

    var ret = util.remoteInvoke("DataSourceService", "executeUpdate", ["DS.回写", sql]);

    if (ret && ret.succeeded) {

        spreadsheetReport.doRefresh();

        return true;

    }

}

 

 

  • 无标签