NCV61-协同配置技术红皮书

更新时间:2023-10-23 13:08:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

协同配置

第一章 简介

基础配置包括组织权限、基础数据、用印、模板等产品模块,提供了平台级档案等基础数据的访问接口。

第二章 基础服务器类

2.1 持久化

1 / 31

上图是持久化服务现有的组件结构,抽象服务中提供了基本的数据持久化功能(如增删改),但是校验、事件分发等业务应用没有,需要继承组件自行实现。

目前,在协同持久化服务层面,实现了校验器、事件分发等机制。如果想直接利用NC现有机制,可以采用OA的持久化方案。自行实现抽象服务,并调用NC现有的业务锁、事件、校验等机制。

抽象服务类如下: 类名 nc.uap.cpb.baseservice.SingleBaseService nc.uap.cpb.baseservice.MtBaseService nc.uap.cpb.baseservice.MmtBaseService nc.uap.cpb.baseservice.AggVOBaseService 说明 简单服务,针对独立单据的操作 基本服务,可针对启用、停用等做批量操作 批量操作服务 针对聚合VO的服务

2 / 31

第三章 组织权限

3.1 抽象多组织模型

协同组织模型提供了一种抽象的组织模型,该模型是一种弹性的组织架构。不同的业务产品可以根据自己产品的特性定义自己的产品组织模型。系统默认提供的是NC组织适配器,也就是说在NC产品中定义了组织之后,会自动同步到协同组织中。

第四章 基础数据

4.1 模板管理

4.1.1 查询模板

查询模版包括新增、编辑、删除、查询条件编辑和模版分配功能;

新增:

选择某个模版,点击“新增”(包括模版编号、模版名称、节点编码、模版分配节点、元数据主体、是否显示高级搜索);

3 / 31

点击“确定”保存。 编辑:

选中模版,点击“修改”,修改模版编号、模版名称、节点编码、模版分配节点、元数据主体、是否显示高级搜索;(注:修改了模板名称)

4 / 31

点击“确定”更新; 删除:

选中模版,点击“删除”,弹出删除对话框,点击“确定”,删除选中模板;

查询条件编辑:

选中模版,点击“查询条件编辑”按钮,打开查询条件编辑窗口,根据添加的元数据主体数据,在左侧树中全部显示元数据结构,通过中间按钮“向右”、“向左”按钮添加、删除查询条件,也可以通过添加系统变量菜单添加自定义变量作为查询条件;

5 / 31

点击“确定”,保存选择的查询编辑条件。 模版分配:

选择某个模版,点击“模版分配”,可以有角色、用户、组织三个部分;选择角色、用户、组织中一个或多个;

点击“确定”保存,分配模版权限; 快速查询配置:

6 / 31

点击“OK”,引用公共片段pubview_simplequery,在pagemeta.pm中

添加了refId=”../pubview_simplequery”,widget中id可以修改; 在文件的uimeta.um中添加UI设计

公共片段pubview_simplequery是通过配置文件动态添加的,在文件中:

通过类SimpleQueryWidgetProvider.java生成控件,通过SimpleQueryWidgetUIProvider.java设计UI,通过SimpleQueryController.java控制该公共片段: 点击搜索,触发SimpleQueryController.java中

Public void onQryBtOk(MouseEvent e){}方法,最后通过触发命令new

UifPlugoutCmd(widgetId,”qryout”,Map);

7 / 31

PlugoutDesc plugoutDesc = new PlugoutDesc(); plugoutDesc.setId(\);

widget.addPlugoutDescs(plugoutDesc);

是动态添加的,因此在引用的view中要添加一个pluginDesc和Connector,如:

才能够触发添加的plugin,如:

如果不需要直接用拼写的wheresql,也可以通过((FromWhereSQLImpl)keys.get(“wheresql”)).getFieldAndMap()得到查询条件的键值对,用于其它。

4.1.2 规则模板

规则模版包括新增、编辑、删除、规则条件编辑和模版分配功能; 新增:

选择某个模版,点击“新增”(包括模版编号、模版名称、节点编码、模版分配节点、元数据主体、是否显示高级搜索);点击“确定”保存;

8 / 31

编辑:

选中模版,点击“修改”,修改模版编号、模版名称、节点编码、模版分配节点、元数据主体、是否显示高级搜索;点击“确定”更新; 删除:

选中模版,点击“删除”,删除模版; 规则条件编辑:

选中模版,点击“查询条件编辑”按钮,打开查询条件编辑窗口,根据添加的元数据主体数据,在左侧树中全部显示元数据结构,通过中间按钮“向右”、“向左”按钮添加、删除查询条件,也可以通过添加系统变量菜单添加自定义变量作为条件,设计规则条件 模版分配:

选择某个模版,点击“模版分配”,可以有角色、用户、组织三个部分;选择角色、用户、组织中一个或多个,点击“确定”保存,分配模版权限 使用规则模板的方法: 配置文件:

在使用的窗体中应用文件application.app中应用规则模板窗体并添加一个Connector,如

并在当前使用的widget中添加一个pluginDesc,如

并添加

Map.put(GzConstant.$NODECODE,”E06204”); Map.put(GzConstant.$PK_GROUP,”001”);

Map.put(GzConstant.$PK_RULESCHEME,”001001001”); Map.put(GzConstant.BEANID,”0000000000000000011”);

AppLifeCycleContext.current.getApplicationContext.navgate(“cp_gztemplate”,”企业分组条件”,”800”,”600”,map,null,true); 弹出规则模板:

9 / 31

4.1.3 打印模板

新增:

选择某个模版,点击“新增”(包括模版编号、模版名称、节点编码、模版分配节点、元数据主体、是否显示高级搜索);点击“确定”保存; 编辑:

选中模版,点击“修改”,修改模版编号、模版名称、节点编码、模版分配节点、元数据主体、是否显示高级搜索;点击“确定”更新; 删除:

选中模版,点击“删除”,删除模版; 打印条件编辑:

选中模版,点击“查询条件编辑”按钮,打开查询条件编辑窗口,根据添加的元数据主体数据,在左侧树中全部显示元数据结构,通过中间按钮“向右”、“向左”按钮添加、删除查询条件,也可以通过添加系统变量菜单添加自定义变量作为查询条件; 导出:

选择模版,点击“导出”,根据模版编辑的打印条件,生成xml文件,保存在本地;

模版上传:

在本地设计一个word文档,讲生成的xml文件作为数据源导入到word模版中,设计模版,点击“模版上传”,选择设计好的模版上传到文件服务器上,并将上传的文件PK_FILE回写到模版打印表(CP_PRINT_TEMPLATE)中; 模版下载:

选择模版,点击“模版下载”,获取已上传的文件PK_FILE,并下载文件到本地;

10 / 31

模版分配:

选择某个模版,点击“模版分配”,可以有角色、用户、组织三个部分;选择角色、用户、组织中一个或多个,点击“确定”保存,分配模版权限

4.1.4 表单配置

表单配置是指在选择的功能节点基础上进行定制业务的个性化,可以对功能节点进行个性化改造后进行使用,不影响原先功能节点的正常使用。主要功能有:新增个性化,修改,删除,个性化设置,模板分配,重置等。

4.1.4.1 新增个性化

选择模板使用的设备名称,目前支持的设备有:手机、pc、pad。

设置模板的名称,优先级等。

11 / 31

新增的模板在列表中的位置。

4.1.4.2 修改个性化

对增加的模板进行修改,可以修改名称、优先级、和设备。

12 / 31

4.1.4.3 个性化设置

个性化设置可以对模板中的所有组件进行样式内容的设置,在视图模式下进行可见即可得的操作。如:上图中对显示字段“用户名称”个性化修改为“用户名称test”。

4.1.4.4 模板分配

13 / 31

模板分配是把个性化之后的模板分配给使用者,这里的使用者包括三个类型:角色、用户、组织。

? 角色:是指个性化模板分配给一个角色后,该角色下的用户将可以使用该个性化模

板。

? 用户:分配给一个用户,该用户即可见该模板。

? 组织:分配给一个组织,则该组织对该模板有权限。

4.1.4.5 重置模板

当个性化设置对模板修改的比较混乱时,可以通过“重置模板”还原该模板到初始状态。也可以通过“删除”功能把该模板删除后新建一个原始模板。

4.2 参数

4.2.1 参数模板(cp_sysinittemp表)

参数模板表中的字段如上图所示。其中上图中标红字段“domainflag”外键关联模块分组表(cp_appscategory)的“id”字段(非pk字段),标识参数具体属于哪个节点下。 对应元数据实体文件路径:uapcp\\cpb\\METADATA\\cpb_mgr\\cpb_sysinittemp.bmf

14 / 31

4.2.2 参数设置(cp_sysinit表)

参数设置表中的字段如上图所示。其中标红字段:

“sysinit”外键关联上面的参数模板表的pk“pk_sysinittemp“。 “pk_org”所属组织的pk,标识当前参数具体属于哪个组织。

对应元数据实体文件路径:uapcp\\cpb\\METADATA\\cpb_mgr\\cpb_sysinit.bmf

4.2.3 参数设置页面操作

目前只提供对参数的修改和查询操作。 ? 只能修改“参数值”,“是否控制下级”字段如上图。当修改时,会根据上图中的“取值

范围”字段限定取值范围。限定规则: ? 取值范围字段以“-”分隔,如“0-8“,则输入值限定为数字,且在限定的范围之内。 ? 取值范围以“/”或者“,”分隔,如“总部统一制定/集团统一制定/各个单位自行维

护”,修改时会渲染为下拉列表的形式,如上图所示。 ? 其它修改时为文本框输入,对值不做限制。 ? 查询:

根据组织单元参照查询:对应cp_sysinit参数设置表中的pk_org字段。

根据树子节点查询:对应参数模板表cp_sysinittemp表中的domainflag字段。

15 / 31

4.2.4 参数设置预置脚本

涉及表:参数模板表cp_sysinittemp和参数设置表cp_sysinit。 ? ?

cp_sysinittemp表中设置domainflag字段值为参数所属模块节点的id,id字段为cp_appscategory表的“id”字段,非pk字段。

cp_sysinittemp表中设置pk_orgtype字段值为参数所属管控模式类型(全局,集团等)。其具体值参考SysinitConstants类中定义常量

4.2.5 调用服务

服务接口: ICpSysinitQry 服务实现类: CpSysinitQry 该接口中定义了提供获取参数值的方法,具体方法见接口中。 调用方法:

ICpSysinitQry qs = NCLocator.getInstance().lookup(ICpSysinitQry.class); //组织时才需要传pk_org

CpSysinitVO vo = qs.getSysinitByCodeAndPkorg(initcode, pk_org);

4.3 代理人

代理人分为流程代理人、单据代理人两种类型。流程代理是用在审批中,代理人可代替被代理人执行审批任务。单据代理是代理人可替代被代理人填写单据。

4.3.1 代理人注册

代理人是依据业务类型设定的,设置代理人需要先注册业务类型。代理人的设置有两个入口。集团管理员可以在 系统管理->代理人 中为 集团内所有人设置代理人。个人用户可以在任务中心 -> 代理人 中设置。

4.3.2 代理人获取

接口: nc.uap.wfm.agent.FlowAgentHelper.doFind(FlowAgentContext ctx) 调用时需要定义 FlowAgentContext对象,

private String pk_user; //被代理人 用户pk,传入类型

private String pk_agent;// WfmFlowAgentVO 代理对象pk,返回类型 private String pk_flowtype;//业务类型pk,传入类型 private String agenttype;//代理类型,WfmFlowAgentVO.BILL_AGENTTYPE 单据代理 16 / 31

WfmFlowAgentVO.USER_AGENTTYPE 流程代理 4.4 上机日志

现在已经提供了默认的日志记录机制,如果在此基础上还不能满足需求的话,可以根据下面的接口自行调用;台日志支持登录日志、操作日志、业务日志三种形态;接口如下:

4.4.1 登陆日志

类:LoginLogHelper 登录日志接口类 LoginLogVO 登录日志VO类

LoginLogVO包括以下属性的get和set方法: String pk_loginlog 登录日志主键 String clientip 客户端ip String logingrop 登录集团

String username 用户名 String truename

真实姓名 UFDateTime logintime 登录时间 UFDateTime logouttime 注销时间 UFBoolean loginresult 登录结果 String detail 详细信息 String pk_logingrop 登录集团主键 String pk_user

用户主键 String logingropcode 登录集团编码

String sessionid sessionID

Integer dr UFDateTime ts

登陆:public static String login(LoginLogVO vo)throws lfwBusinessException;

/**

* 插入登陆信息 (登录时调用)

* @param vo 要插入的登陆日志VO 无主键 * @return 成功则返回随机生成的主键

* @throws LfwBusinessException

*/

注销:public static int logout(String sessionid,UFDateTime logouttime) lfwBusinessException;

/**

* 更新登出信息 (注销时调用)

17 / 31

throws

* @param sessionid 当前sessionid

* @param logouttime 注销时间

* @return 如操作成功则返回正数 否则返回-1

* @throws LfwBusinessException */

4.4.2 操作日志

类:OperatorLogHelper 操作日志接口类 OperatorLogVO 操作日志VO类

OperatorLogVO 包括以下属性的get和set方法: String pk_funcoperlog String buttonname String clientip

操作日志主键 按钮名称 客户端ip 登录集团主键 功能节点全名 用户名称 真实姓名 操作时间 登录集团编码 功能节点编码 用户主键 功能节点主键 详细信息

Sessionid

String pk_logingrop String funcnodename String username String truename

UFDateTime opertime String logingropcode String funcnodecode String pk_user

String pk_funcnode String detail String sessionid Integer dr UFDateTime ts

操作:public static String doOperator(OperatorLogVO vo)throws LfwBusinessException /**

* 插入操作日志 (记录操作日志时调用) * @param vo 待插入的日志VO 无主键 * @return 成功则返回随即生成的主键 * @throws LfwBusinessException */

4.4.3 业务日志

类: DataLogHelper 业务日志接口类

DataLogVO

业务日志VO类

18 / 31

DataLogVO包括以下属性的get和set方法

String pk_businesslog String detail String clientip

业务日志主键 详细信息 客户端ip 业务对象类型 操作时间 操作 业务对象 操作结果 业务对象编码 业务对象组织 登录集团 用户名称 真实姓名 业务对象主键 登录集团主键 登录集团编码 用户主键 SessionID

String busobjtype String operate

UFDateTime opertime String businessobject UFBoolean operresult String busobjcode String logingrop String username String truename

String busobjorganization

String pk_busobj

String pk_logingrop String logingropcode String pk_user String sessionid Integer dr UFDateTime ts

执行业务:public static String doTask(DataLogVO vo) throws LfwBusinessException /**

* 插入业务日志 (记录业务日志时调用) * @param vo 要插入的日志VO 无主键 * @return 插入成功则返回随机生成的主键 * @throws LfwBusinessException */

第五章 文档与用印

5.1 前言

Office编辑在OA领域是不可获取的控件,在集成了相关控件的基础上提供开发相关接口,并屏蔽开发对第三方开发控件的直接调用

控件分为Office、电子签名、上传的等三类;其中Office控件中继承了电子印章。 Office控件目前可以支持word、excel、wps、et等四种类型的文档

19 / 31

5.2 Office控件

5.2.1 调用接口

${root}/core/word.jsp?pageId=officeedit&url={wordpk}

必选参数: pageId:控件基础参数,不可修改 url : 后台存储 PK 其他参数: TrackRevisions: 是否留痕,默认true autoSave:是否自动保存,默认 true saveTTL:自动保存时间,默认180秒 readonly:是否只读,默认false showRevisions:是否显示痕迹,默认true occupymsg:打开文档后的提示消息,默认空 filenew:新建文档,默认false loadbookmarkclass:替换标签实现类 sysid:系统编码(获取filemanager用)

5.2.2 主要功能

5.2.2.1 痕迹

痕迹目前支持word、wps两种文档类型,只要传入参数 TrackRevisions 即可。可通过接受修订或者拒绝修订来清除痕迹;目前没有对清除痕迹的操作做权限控制,如果需要,将来提供接口。

接受修订: acceptAllRevision() 拒绝修订: rejectAllRevisions() 5.2.2.2 手写批注

目前手写批注有两个功能节点,一个是在留痕菜单中,另一个是在签章菜单中。实现方式不同,前一种只是在office中增加了一个浮动图片,没有痕迹,无法查到图片来源。

另一种,则是利用手写签章机制,去除签章的保护功能

在前期无法对这两种功能做出取舍,暂时全部提供,将来再定去留。

20 / 31

本文来源:https://www.bwwdw.com/article/2huf.html

Top