多级填报快速使用手册

做了两个关于多级填报的任务,感觉上手很不容易,而且很多东西很乱,而且随着客户对多级填报的需求逐渐的增多,而现有的平台里又没有一个完整的例子,于是想总结一下,以供各位同事演示或者测试使用。

阅读本篇文章需要注意的事项:

1 仅供内部测试使用,请勿将此文章发给客户使用。

2 由于平台版本的更新,多级填报部分也可能会有升级,可能导致文章中的相关内容无法跑通 ,我会及时跟进对应上平台发布的进度,对文章进行及时的修改,欢迎遇到问题的同事找我沟通。

下面进入正题,如何建立一个多级填报任务。

第一步,建立流程。

流程的建立离不开数据库表数据,先将相关数据库表结构给大家介绍一下 , 具体表结构与字段,请详见附录(某些字段可能跟现在使用的表字段有差异,但是差异并不会影响大家对主要字段的理解)。以上是相关的菜单和介绍,可能让大家看的很茫然,大家可以对照下面的 sql 语句对相关的表进行理解。

将以下 sql 语句运行就可以得到一个完整的流程。

– —————————-

– Table structure for rt_nodeoperation

– —————————-

DROP TABLE IF EXISTS rt_nodeoperation ;

CREATE TABLE rt_nodeoperation (

Node_ID INTEGER DEFAULT NULL,

Operation_ID INTEGER DEFAULT NULL,

Operation_VisibleInList INTEGER DEFAULT NULL,

Operation_VisibleInMenu INTEGER DEFAULT NULL,

Operation_Order INTEGER DEFAULT NULL

)

– —————————-

– Records of rt_nodeoperation

– —————————-

INSERT INTO rt_nodeoperation VALUES (’12′, ’1′, ’1′, ’1′, null);

INSERT INTO rt_nodeoperation VALUES (’12′, ’2′, ’1′, ’1′, null);

INSERT INTO rt_nodeoperation VALUES (’11′, ’1′, ’1′, ’1′, null);

– —————————-

– Table structure for rt_operation

– —————————-

DROP TABLE IF EXISTS rt_operation ;

CREATE TABLE rt_operation (

Operation_ID INTEGER DEFAULT NULL,

Operation_Name varchar(255) DEFAULT NULL,

Operation_Describe varchar(255) DEFAULT NULL,

Operation_Type INTEGER DEFAULT NULL,

Operation_ClassName varchar(255) DEFAULT NULL,

Operation_ImagePath varchar(255) DEFAULT NULL

)

– —————————-

– Records of rt_operation

– —————————-

INSERT INTO rt_operation VALUES (’1′, ‘完成 ‘, ‘ 前往下一个节点 ‘, ’1′, ‘com.runqianapp.workflow.operations.CompleteOperation’, null);

INSERT INTO rt_operation VALUES (’2′, ‘回退 ‘, ‘ 退回上一个节点 ‘, ’3′, ‘com.runqianapp.workflow.operations.RollbackOperation’, null);

INSERT INTO rt_operation VALUES (’3′, ‘关闭 ‘, ‘ 关闭当前节点 ‘, ’3′, ‘com.runqianapp.workflow.operations.CloseOperation’, null);

INSERT INTO rt_operation VALUES (’4′, ‘分发 ‘, ‘ 按用户分发 ‘, ’4′, ‘com.runqianapp.workflow.operations.IssuedSubTaskByUserOperation’, null);

INSERT INTO rt_operation VALUES (’5′, ‘分发 ‘, ‘ 按机构分发 ‘, ’4′, ‘com.runqianapp.workflow.operations.IssuedSubTaskByOrgOperation’, null);

INSERT INTO rt_operation VALUES (’6′, ‘子任务 ‘, ‘ 查看模式 ‘, ’4′, ‘com.runqianapp.workflow.operations.ReadOnlySubTaskListOperation’, null);

INSERT INTO rt_operation VALUES (’7′, ‘子任务 ‘, ‘ 处理模式 ‘, ’4′, ‘com.runqianapp.workflow.operations.SubTaskListOperation’, null);

– —————————-

– Table structure for wf_node

– —————————-

DROP TABLE IF EXISTS wf_node ;

CREATE TABLE wf_node (

Node_ID INTEGER NOT NULL,

Node_Name varchar(255) DEFAULT NULL,

Node_Type INTEGER DEFAULT NULL,

Node_Describe varchar(255) DEFAULT NULL,

Node_TransactionBox varchar(255) DEFAULT NULL,

Node_Listener varchar(255) DEFAULT NULL,

Node_Mode varchar(32) DEFAULT NULL

)

– —————————-

– Records of wf_node

– —————————-

INSERT INTO wf_node VALUES (’1′, ‘起始节点 ‘, ’0′, null, ‘com.runqianapp.workflow.input.InputTransaction’, ‘com.runqianapp.workflow.input.InputNodeListener’, null);

INSERT INTO wf_node VALUES (’2′, ‘结束节点 ‘, ’1′, null, ‘com.runqianapp.workflow.input.InputTransaction’, ‘com.runqianapp.workflow.input.InputNodeListener’, null);

INSERT INTO wf_node VALUES (’11′, ‘填报节点 ‘, ’2′, null, ‘com.runqianapp.workflow.input.InputTransaction’, ‘com.runqianapp.workflow.input.InputNodeListener’, ”);

INSERT INTO wf_node VALUES (’12′, ‘审批节点 ‘, ’2′, ”, ‘com.runqianapp.workflow.input.InputTransaction’, ‘com.runqianapp.workflow.input.InputNodeListener’, ”);

– —————————-

– Table structure for wf_procdefine

– —————————-

DROP TABLE IF EXISTS wf_procdefine ;

CREATE TABLE wf_procdefine (

Proc_ID INTEGER NOT NULL,

Proc_Name varchar(255) DEFAULT NULL,

Proc_Describe varchar(255),

Proc_StartNodeID INTEGER NOT NULL,

Proc_EndNodeID INTEGER NOT NULL,

Proc_BranchMark varchar(255),

Proc_ReachIsFull INTEGER DEFAULT NULL,

Proc_MultiPassIN INTEGER DEFAULT NULL,

Proc_MultiPassOut INTEGER DEFAULT NULL,

Proc_UserFilter varchar(255) DEFAULT NULL,

Proc_BackFilterType INTEGER DEFAULT NULL,

Proc_BackCompleteType INTEGER DEFAULT NULL

)

– —————————-

– Records of wf_procdefine

– —————————-

INSERT INTO wf_procdefine VALUES (’1′, ‘节点流转到销省公司 ‘, null, ’1′, ’11′, ’0′, ’0′, ’1′, ’1′, ‘com.runqianapp.workflow.input.SameOrgUser’, ’1′, ’1′);

INSERT INTO wf_procdefine VALUES (’1′, ‘节点流转结束 ‘, null, ’11′, ’12′, ’0′, ’0′, ’1′, ’1′, ‘com.runqianapp.workflow.input.InputUserFilter’, ’1′, ’1′);

INSERT INTO wf_procdefine VALUES (’1′, ‘节点流转到市局填报 ‘, null, ’12′, ’2′, ’0′, ’0′, ’1′, ’1′, ‘com.runqianapp.workflow.input.SameOrgUser’, ’1′, ’1′);

– —————————-

– Table structure for wf_process

– —————————-

DROP TABLE IF EXISTS wf_process ;

CREATE TABLE wf_process (

Proc_ID INTEGER NOT NULL,

Proc_Name varchar(255) DEFAULT NULL,

Proc_Type INTEGER DEFAULT NULL,

Proc_TemplateID varchar(255) DEFAULT NULL,

Proc_Describe varchar(255) DEFAULT NULL,

Proc_Listener varchar(255) DEFAULT NULL,

Proc_TimeLimit INTEGER DEFAULT NULL,

Proc_TimeType INTEGER DEFAULT NULL,

Proc_Xml varchar(255) DEFAULT NULL

)

– —————————-

– Records of wf_process

– —————————-

INSERT INTO wf_process VALUES (’1′, ‘测试流程 ‘, ’2′, null, null, ‘com.runqianapp.workflow.input.InputTaskListener’, ’99′, ’1′, null);

通过以上步骤 流程就建立完毕了。

第二步,建立报表。

建立报表需要注意以下几点:

1, 目前只能使用 v4 建立的填报表作为多级填报的资源。

2, 填报表必须建立一个名为 Task_ID 的参数 ,必须保证参数名大小写正确。

3, 填报的数据库表中必须增加一列,以存储 taskid ,在报表更新的更新属性中需要增加对此列的更新,更新的值为 Task_ID 这个参数,主键需要勾选上。(个人认为这种设置不是很理想,因为这样直接改变了客户的数据库表的表结构,不如新建一个数据库表,通过外键关联,以确定唯一性和记录任务的 Task_ID )。

报表建立完成后即可在平台中添加以下这个资源。

第三步,定义层级关系,如果是演示,可以直接使用系统中自带的层级关系。

由销售部的王伟向销售各个部门下发任务。

最后一步,新建填报下发任务。

这步中需要注意的是当前版本( 2012 7 月初版本)中的 bug 导致无法将资源回写到处理对象中,需要更新一个 jsp chooseRes.jsp 这个 jsp 我会将他附在附件中,估计之后的版本这个问题修正了就不需要这么做了。

还有一个需要注意的问题是,当前任务下发的对象如果通过组织机构下发,则只能发给下级,无法发给同级 ,即使按照角色下发,发给了同级,但是因为流程的原因,会导致无人审批,这点在了解产品的时候需要注意,同时也希望相关同事能对这块做一个改进。

设置之后,多级填报的功能就能正常使用了,如果有什么问题可以跟我联系,我会在附件中贴上报表和 报表的建表语句,以供测试使用。

附录 表字段定义介绍

WF_Process

流程表:用于记录流程基本属性

字段

字段定义说明

是否必设

Proc_ID

流程 ID

必设

Proc_Name

流程名称

必设

Proc_Type

流程类型:

0 - 静态流程

1 - 动态流程

2 - 动态模板

必设

Proc_TemplateID

动态流程模板 ID

非必设,只有当 Proc_Type 1 ,即流程类型为动态流程时看,才需定义

Proc_Describe

流程描述

非必设

Proc_Listener

流程任务监听器类

必设,需设定流程任务实例监听器所使用的类名

Proc_TimeLimit

流程处理总时限,为数字

非必设,需要使用流程处理时限预警功能时才需设置

Proc_TimeType

处理时限时间类型:

0 - 工时

1 - 工作日

2 - 小时

3 -

非必设,需要使用里程处理时限预警功能是菜需设置

WF_Node

节点表:用于记录节点基本属性

字段

字段定义说明

是否必设

Node_ID

节点 ID

必设

Node_Name

节点名称

必设

Node_Type

节点类型:

0 - 开始节点

1 - 结束节点

2 - 手动节点

3 - 自动节点

必设

Node_Describe

节点描述

非必设

Node_TransactionBox

节点业务容器类

必设,需设定节点业务容器类名

Node_Listener

节点监听器类

必设,需设定节点实例监听器类名

WF_ProcDefine

流程定义表:用于记录流程节点的流转路径

字段

字段定义说明

是否必设

Proc_ID

流程 ID

必设

Proc_Name

路径名称

必设

Proc_Describe

路径描述

非必设

Proc_StartNodeID

出发节点 ID

必设

Proc_EndNodeID

到达节点 ID

必设

Proc_BranchMark

出发分支标号

必设

Proc_ReachIsFull

N 1 的到达充分性:

0- 充分方式,任一个路径到了就行;

1- 必要方式,所有路径都达到才行

必设

Proc_MultiPassIN

多次流转变量 _ 到达

必设

Proc_MultiPassOut

多次流转变量 _ 出发

必设

RT_NodeOrg

节点主办机构表:用于记录节点的主办机构

字段

字段定义说明

是否必设

Org_ID

机构 ID

必设

Node_ID

节点 ID

必设

RT_NodeRole

节点主办角色表:用于记录节点的主办角色

字段

字段定义说明

是否必设

Role_ID

角色 ID

必设

Node_ID

节点 ID

必设

RT_NodeUser

节点主办用户表:用于记录节点的主办用户

字段

字段定义说明

是否必设

User_ID

用户 ID

必设

Node_ID

节点 ID

必设

RT_ProcNodeOperation

流程节点操作菜单表:用于记录节点的可处理操作

字段

字段定义说明

是否必设

Node_ID

节点 ID

必设

Proc_ID

流程 ID

必设

Operation_ID

操作菜单 ID

必设

Operation_VisibleInList

菜单是否在操作任务列表显示:

0 - 显示

1 - 不显示

必设

Operation_VisibleInMenu

菜单是否在填报页面中显示:

0 - 显示

1 - 不显示

必设

Operation_Order

操作菜单排列顺序

必设

RT_Operation

操作菜单表:用于记录工作流中可用的操作菜单

字段

字段定义说明

是否必设

Operation_ID

操作菜单 ID

必设

Operation_Name

操作菜单名称

必设

Operation_Describe

操作菜单描述

非必设

Operation_Type

操作菜单类型

必设

Operation_ClassName

操作菜单类名

必设

Operation_ImagePath

操作菜单图片路径

非必设

RT_NodeObject

节点处理对象表:用于记录工作节点处理的填报表

字段

字段定义说明

是否必设

Node_ID

节点 ID

必设

Proc_ID

流程 ID

必设

Object_No

处理对象编号,为处理对象设置一个唯一的对象编号

必设

Object_Type

处理对象类型:

0 - 自定义;

如选择的是 RBP 中的资源,则对应存该资源的类型 ID

必设

Object_Path

处理对象路径或 ID

若处理对象为 RBP 资源,则值为资源 ID

若处理对象为自定义,则值为对象文件所在位置的路径

必设

RT_NodeObjectAuthority

节点处理对象字段权限表:

描述节点处理对象(填报表)的字段可读、可写等权限设置

字段

字段定义说明

是否必设

Node_ID

节点 ID

必设

Proc_ID

流程 ID

必设

Object_No

处理对象编号

必设

Field_Name

字段名称,存储的值为报表单元格名称,如: B5 C3

必设

Field_Description

字段描述,默认保存与 FieldName 字段相同的值,即报表单元格名称,用户可修改,输入业务含义的字段描述,从而可供应用使用,比如提供任务关键信息显示的列名使用。

非必设

Authority_Type

权限类型:

0- 可见

1- 可写

2- 电子签章

3- 关键信息

必设

Authority_Value

权限值:

0-false

1-true

必设

OperationID

操作菜单 ID

非必设

热门文章