HR自助服务单据开发快速入门.docx

上传人:b****6 文档编号:8468752 上传时间:2023-01-31 格式:DOCX 页数:32 大小:2.36MB
下载 相关 举报
HR自助服务单据开发快速入门.docx_第1页
第1页 / 共32页
HR自助服务单据开发快速入门.docx_第2页
第2页 / 共32页
HR自助服务单据开发快速入门.docx_第3页
第3页 / 共32页
HR自助服务单据开发快速入门.docx_第4页
第4页 / 共32页
HR自助服务单据开发快速入门.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

HR自助服务单据开发快速入门.docx

《HR自助服务单据开发快速入门.docx》由会员分享,可在线阅读,更多相关《HR自助服务单据开发快速入门.docx(32页珍藏版)》请在冰豆网上搜索。

HR自助服务单据开发快速入门.docx

HR自助服务单据开发快速入门

HR自助服务

单据开发快速入门

 

用友软件股份有限公司北京分公司客户开发部

2011年3月

 

1、NC自助服务单据开发

1.1.总体概述

NC自助服务模块使用的是BSTEK公司推出的Dorado5展现中间件技术。

通过将Dorado和NC-UAP平台的整合,可以在自助服务中引用NC-UAP平台中的单据模板,提高了在自助下开发单据的效率。

Dorado技术详细介绍请见BSTEK公司官网:

1.2.开发环境搭建

1.2.1.配置Java运行时环境

通过Sun官网获取JDK开发包,下载的开发包解压缩到本地非中文名称的目录中;也可以直接使用NCHOME中自带的JDK开发包,如本机中NCHOME的JDK开发包D:

\nchome56\nchome\ufjdk

1.2.2.配置JAVA_HOME环境变量

对于环境变量的配置就不用多说了,本机的配置如下:

1.2.3.下载并解开Dorado5开发包

通过如下的地址获取dorado5的开发包:

将下载的zip文件解压缩到本地非中文名称的目录中,如本机的E:

\dorado5.2

1.2.4.安装Dorado5

在确保系统已经配置过JAVA_HOME的前提下,并双击运行dorado5开发包中的setup.bat文件,该文件进行dorado5开发包的文件初始化工作。

(特别声明:

绿色食品,setup.bat的所有操作都是针对开发包所在的目录作初始化工作,不会对该目录之外的内容进行修改。

首先会打开一个命令控制台,要你确认是否执行初始化的工作:

按任意键继续初始化工作:

这时候系统会在桌面上自动的生成一个dordo5studio的快捷启动图表,并在控制台中出现让你选择是否直接启动dorado的集成开发环境,也就是dorado5的studio。

以下统称studio。

如果选择y并按回车键确认打开studio,可以看到下图:

1.2.5.Eclipse开发环境搭建

Eclipse开发环境的搭建在此就不做介绍了,主要的环境有NC56、eclipse开发环境、nc56插件。

1.2.6.搭建项目工程

对于自助服务的开发,需要同时用到Eclipse和Dorado工程,对于项目工程需要将Eclipse工程目录和Dorado工程目录整合到一块,以便对在两个开发工具对同一工程进行开发。

本例中使用的开发工程为NC-HR自助模块的源开发工程HR_WEB5.6_dev。

在Eclipse中导入HR_WEB5.6_dev工程,如下:

在Dorado集成开发平台中导入HR_WEB5.6_dev工程如下:

1.3.自助单据开发流程

在自助服务下开发的JSP界面,可将NC-UAP平台下的单据整合到自助服务中,这是通过将单据模板信息解析成Dorado控件来实现的,由于是根据单据模板信息表中的数据进行解析的,对于用元数据制作的单据模板,在自助服务界面目前还没有做到很好的兼容,解析过程中还没有增加对元数据的解析,故目前自助服务只能够对用数据字典制作的单据模板进行正确的解析,下面介绍在NC56中,如何用数据字典在自助服务下开发轻量级单据界面。

1.3.1.建立数据模型

根据具体的业务在PowerDesigner中建立对应的业务模型,本例中介绍的为休假计划的业务。

1.3.2.导入数据字典

具体的数据字典导入在【客户化】→【二次开发工具】→【系统管理工具】→【数据字典管理】节点来实现导入。

1.3.3.单据模板初始化

在完成数据字典导入之后,就可以在【客户化】→【二次开发工具】→【模板管理】→

【单据模板初始化】节点通过数据字典制作相应的单据模板,具体的与NC5.2初始化单据模板一致。

本例初始化完的单据模板卡片界面显示如下:

1.3.4.导出Java源代码

通过UAP集成开发平台导出Java源代码。

在通过数据源生成VO代码之前,一定要保证在数据库中将数据模型对应的表结构建立,否则在选择数据库表处看不到单据对应的数据库表,具体的建表SQL脚本可以在建模时,通过PowerDesigner生成。

选择完对应的数据库表,设置对应的VO信息以及对应到文件导出目录(%当前eclipse工程%/src/public包)后,点击“确定”按钮,即可完成对VO的导出。

1.3.5.建立视图层ViewModel。

ViewModel是一种用于封装界面逻辑和操作逻辑的对象。

即视图中包含哪些数据、这些数据以什么方式展现、视图中包含哪些控件、这些控件会激发什么操作等等。

我们可以把ViewModel看作是Dataset和各种控件的容器。

ViewModel一般不用于定义各种控件最终在显示的布局,控件布局应通过其它方式进行定义。

在通常情况下,我们利用JSP来完成对ViewModel中定义的控件进行布局。

在Dorado集成开发平台中打开项目工程,在对应的目录下,右键鼠标,如下:

选择新建“Module“,进入ViewModel新建向导。

选择通用的视图模型对象(CommonViewModel)即可,点击“OK”,输入视图模型对象名称,即会在相应的目录下生成一个视图模型对象的XML配置文件,配置文件名称为[输入对象名称.view.xml],如本例在新建视图模型对象的时候输入的名称为LeavePlanOne,则生成的视图模型对象的名称为:

LeavePlanOne.view.xml。

1.3.6.生成JSP页面

对于自助JSP页面是通过ViewModel生成的,具体生成JSP的操作如下图所示:

选择相应的路径以保存生成的JSP文件。

再生成JSP页面之后,需要对生成的JSP页面先进行简单的布局配置,如果需要配置其他在ViewModel中定义的控件显示,在定义完控件后再做详细的页面布局。

对于使用NC-UAP平台的单据模板时,对应管理型界面的JSP界面配置如下:

<%@pagecontentType="text/html;charset=UTF-8"%>

<%@tagliburi=""prefix="d"%>

—引用用友在自助下自定义的标签库-->

<%@tagliburi=""prefix="u"%>

—-config对应的为ViewModel配置文件-->

Viewconfig="nc.bs.hrss.test.leaveplan.LeavePlanOne">

MenuTagdisplayType="2"/>

—-定义单据模板控件显示位置,本例单据模板为管理型,其他类型的标签详见ufida.tld标签描述文件-->

ManageBilllistPosition="100%"/>

View>

1.3.7.建立后台控制类

新建视图模型后台控制类,由于本例中开发的是带审批流的自助界面,具体的后台控制类应继承nc.bs.hrss.pf.PFViewModel。

对于后台控制类的基本配置如下:

packagenc.bs.hrss.test.leaveplan;

importnc.bs.hrss.pf.PFViewModel;

importnc.vo.hr.tools.pub.HRAggVO;

importnc.vo.hrss.test.leaveplan.AggLeaveplanHVO;

importnc.vo.pub.AggregatedValueObject;

importnc.vo.pub.SuperVO;

publicclassLeavePlanOneextendsPFViewModel{

/**

*返回单据VO

*/

@Override

publicAggregatedValueObjecttoBillAggVO()throwsException{

//TODOAuto-generatedmethodstub

HRAggVOaggVO=this.toAggVO();

AggLeaveplanHVOvo=newAggLeaveplanHVO();

vo.setParentVO(aggVO.getParentVO());

vo.setChildrenVO(aggVO.getChildrenVO());

returnvo;

}

/**

*返回对应的单据模板的编码

*/

@Override

publicStringgetBillType(){

//TODOAuto-generatedmethodstub

return"LP01";

}

@Override

publicStringgetBusiType(){

//TODOAuto-generatedmethodstub

returnnull;

}

/**

*用于设置表头对应的VO对象

*/

@Override

publicClass

extendsSuperVO>getHeadClass(){

//TODOAuto-generatedmethodstub

returnnc.vo.hrss.test.leaveplan.LeaveplanHVO.class;

}

/**

*用于设置表体对应的VO对象

*/

@Override

protectedvoidinitBodyTabCodes(){

//TODOAuto-generatedmethodstub

super.addBodyTabCodeClass("tbm_leaveplan_b",nc.vo.hrss.test.leaveplan.LeaveplanBVO.class);

}

}

视图模型后台控制类定义完成后,需要将后台控制类与对应的视图模型进行关联,通过设置ViewModel的clazz属性来实现关联。

1.3.8.功能节点注册

通过NC业务系统【功能注册】节点注册功能节点,在功能注册时,需要注意几点。

●功能性质:

一定要选择“轻量级Web节点”。

●对应文件名或控制名:

为对应的JSP文件。

对新增的自助节点分配权限,分配时一定要将该节点分配给相应的自助角色才行,产品自带的自助角色有四种,在本例中分配给“自助角色-员工“这个角色。

提示:

如果在权限分配时,在相应的节点树位置看不到刚刚注册的功能节点,需到【自定义菜单】节点对节点树的结构进行调整。

到这里自助模块开发单据界面的大致框架就搭建起来了,现在在开发环境下重启NC中间件,登录自助界面就可以看到刚刚在自助节点开发的轻量级Web节点了。

重要提示:

对于在第1.3.6步中生成的JSP文件保存在Eclipse工程项目中,此时登录自助模块,打开刚刚注册的自助节点时,是无法加载到对应的JSP页面的,需要将该JSP页面按照相应的目录结构拷贝到NCHOME的nchome\hotwebs\hrss目录下,Web容器在加载JSP页面时,才能够将该JSP页面加载到容器中。

单击“休假计划练习一”轻量级Web节点,即可进入对应的JSP界面。

1.3.9.注册功能按钮

在1.3.8中打开的轻量级单据界面,是没有对应的功能按钮的,如果需要在画面中添加功能按钮,必须在NC业务系统【功能注册】节点注册相应的功能按钮。

注册完功能节点后,需要在后台控制类中重写父类的initBillState(ButtonFactorybuttonFactory2)方法,以控制每个界面状态按钮的显示情况。

自助服务底层按钮工厂类会自带常用的功能按钮,对于不在自带常用的功能按钮集合内的按钮,需要先定义自己的按钮工厂类,该类需继承nc.bs.hrss.bill.ButtonFactory.对于本例中,“审批意见”为自定义按钮,需要自己定义按钮工厂类,如下:

publicclassLeavePlanOneBtnFactoryextendsButtonFactory{

privatestaticButtonFactoryinstance;

/**附件按钮编码*/

publicstaticfinalStringAPPROVE_NOTE="approvenote";

privateLeavePlanOneBtnFactory(){

//格式:

按钮内码,和注册中相同的中文名称,响应的Command类名,响应的js和java方法名,要显示的图标名称,tooltips提示

String[][]buttons={

{APPROVE_NOTE,"审批意见",null,"onApproveNote","unapprove.gif","查看审批意见"}

};

//系统自带的按钮信息是以二位数组的形式存放,

//在自定义按钮是按照数组的格式定义并添加到二位数组中即可

super.strButtonInfos=(String[][])ArrayUtils.addAll(super.strButtonInfos,buttons);

}

publicstaticButtonFactorygetInstance(){

if(instance==null){

instance=newLeavePlanOneBtnFactory();

}

returninstance;

}

}

自定义按钮的工厂类定义后,就需要在ViewModel的后台控制类中重写父类的initBillState()方法,以控制具体画面状态下按钮的显示情况以及激活情况。

/**

*初始化该单据的所有状态,并且要设置好按钮在该状态下的可见、可用状态

*/

@Override

protectedvoidinitBillState(ButtonFactorybuttonFactory2){

//TODOAuto-generatedmethodstub

//定义单据初始化状态

BillStatebillstate=newBillState(BillState.STATE_INIT);

//定义该状态显示的按钮组

billstate.addVisibleBtns(newString[]{

ButtonFactory.SEARCH,

ButtonFactory.NEW,

ButtonFactory.EDIT,

ButtonFactory.DELETE,

ButtonFactory.SUBMIT,

ButtonFactory.CALLBACK,

ButtonFactory.APPROVE,

ButtonFactory.UNAPPROVE,

LeavePlanOneBtnFactory.APPROVE_NOTE

});

//定义该状态激活的按钮组

billstate.addEnableBtns(newString[]{

ButtonFactory.SEARCH,

ButtonFactory.NEW,

ButtonFactory.EDIT,

ButtonFactory.DELETE,

ButtonFactory.SUBMIT,

ButtonFactory.CALLBACK,

ButtonFactory.APPROVE,

ButtonFactory.UNAPPROVE,

LeavePlanOneBtnFactory.APPROVE_NOTE

});

//将增加的单据状态添加

this.addBillState(billstate);

super.initBillState(LeavePlanOneBtnFactory.getInstance());

}

在后台控制类定义完单据的状态以及对应状态按钮组显示情况后,需要在视图层控制对象ViewModel加载时,添加相应的JS事件,以控制单据画面初始化时所属的状态。

到此,重启中间件,重新登录自助界面,即可看到单据初始化状态显示的按钮组。

提示:

对于在后台控制类中增加了新的方法,或者引用了新定义的类时,才需要重启中间件,其他情况无需重启中间件。

对于在视图控制对象ViewModel中添加JS脚本后,首先需要保证Eclipse工程中对应的XML文件与在Dorado工具对ViewModel的配置保持同步;其次,再重新登录自助界面,如果发现新增加的JS脚本没有起作用,这时要将IE的缓存清除,以保证能够加载到最新的JS脚本(在javaWeb开发中经常会这样去做)。

1.3.10.按钮处理事件的定义

通过以上9步,即可完成在自助服务下单据的界面模型的开发,接下来重要的工作就是定义单据界面中按钮的处理事件。

在Dorado框架中,前台界面与后台处理类的交互是通过Command组件来完成的,常用的有UpdateCommand、RPCCommand.(其他的本人也没用过,组建详细使用说明请见《dorado5组件详解v1.1.doc》)

组件Command的method属性用于指定调用服务器接受类的指定方法的方法名(默认为视图模型中的方法名,即视图ViewModel的关联的后台控制类中的方法)。

对于按钮在前台页面响应事件,是通过定义JS来实现的,具体响应的JS函数的名称在后台按钮工厂类中已经定义。

//格式:

按钮内码,和注册中相同的中文名称,响应的Command类名,响应的js和java方法名,要显示的图标名称,tooltips提示

String[][]buttons={

{APPROVE_NOTE,"审批意见",null,"onApproveNote","unapprove.gif","查看审批意见"}

};

如自定义的按钮“审批意见”在前台页面响应的JS函数的方法应为functiononApproveNote().

1.3.11.单据属性设置

对于带审批流的单据,需要在UAP平台中进行一些审批流相关属性的设置,这与NC5.2

中的设置类似,具体的设置步骤如下:

第一步:

单据类型定义

如上图,输入“类型代码”、“类型名称”、“节点编号”,完成后点击“保存”按钮保存定义的单据类型信息。

(其中:

此处定义的“类型代码”最好和单据模板定义步骤定义的单据模板编码一致,否则在后面会遇到意想不到的问题。

第二步:

单据号设置

如上图,设置单据号的生成规则。

第三步:

单据动作定义

第四步:

单据动作脚本设置

如上图,在此处对于单据的动作脚本进行编辑,具体的脚本可以直接从其他定义的单据动作脚本拷贝过来即可(因为笔者没有找到在何处去自动生成系统默认的单据动作脚本,只能通过此方法来实现)。

在编辑完动作脚本后,在NCHOME对应的模块目录下的\META-INF\var\source会生成相应的动作脚本类。

第五步:

单据VO对照

具体的VO对照关系设置如下图:

附录:

轻量级参照实现方式:

对于自助开发下的单据中字段的参照与业务系统中有所不同,具体设置字段为参照的步骤如下:

第一步:

在单据模板中,将参照的字段的数据类型设置为参照,参照类型设置具体的参照编码,如下图。

第二步:

配置具体的参照,参照的配置是通过XML文件来配置的,参照主要有三种展现类型:

GRID、TREE、TREEGRID。

具体的配置请见当前工程的\home\ref\business\RefLeaveItemGrid.xml文件,为休假类别参照的XML配置文件。

第三步:

设置具体的参照配置文件与参照类型编码的映射关系,对于映射关系的设置,目前还没有具体的配置界面,只能够通过在后台表hrss_ref_map表中去配置具体的映射关系,下图为休假类别参照对照配置。

审批流配置注意点

要想在自助模块顺利使用审批流,需要在工程中做如下配置:

第一步:

设置和审批有关的字段的对应关系,通过集成PFConfig类来配置具体的字段对应关系。

(见nc.vo.hrss.test.leaveplan.LeavePlanOneConfig)

第二步:

配置Hrss单据信息,通过实现nc.itf.hrss.pf.IConfigMeta接口来进行配置。

(详见nc.bs.hrss.test.leaveplan.LeavePlanOneMeta)

第三步:

配置Hrss单据注册类,用于将自定义的单据信息注册到Hrss单据集中。

packagenc.impl.hrss.ta.leaveplan;

importnc.bs.hrss.ta.leaveplan.LeavePlanConfigMeta;

importnc.bs.hrss.test.leaveplan.LeavePlanOneMeta;

importnc.itf.hrss.pf.IConfigMeta;

importnc.itf.hrss.pf.IHrssPfConfigExt;

publicclassLeavePlanPfConfigExtImplimplementsIHrssPfConfigExt{

publicIConfigMeta[]getPfConfigExt(){

//TODOAuto-generatedmethodstub

returnnewIConfigMeta[]{

newLeavePlanConfigMeta(),

newLeavePlanOneMeta()

};

}

}

在定义完具体的后台注册实现类后,需要在UPM文件(hr_hrss.upm)中进行配置。

第四步:

配置审批流后台处理类。

第五步:

定义审批流。

“提交”动作按钮特别说明:

1、如果在ViewModel的后台控制类中,重写AggregatedValueObjecttoBillAggVO()方法返回的类型为HYBillVO,则需要在聚合VO(AggLeaveplanHVO)定义相关的nc.vo.trade.field.IBillField接口实现类,以配置具体的在审批流字段的具体对应关系。

2、如果重写AggregatedValueObjecttoBil

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1