EAS费用报销模块web二次开发指南.docx
- 文档编号:28657726
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:37
- 大小:936.72KB
EAS费用报销模块web二次开发指南.docx
《EAS费用报销模块web二次开发指南.docx》由会员分享,可在线阅读,更多相关《EAS费用报销模块web二次开发指南.docx(37页珍藏版)》请在冰豆网上搜索。
EAS费用报销模块web二次开发指南
EAS费用报销模块
Web二次开发指南
EASHR系统部作者李大伟,贺鹏辉整理陈昕
导读
本文从头开始介绍了EAS费用报销Web表单的二次开发方法,同时也说明了开发环境的安装和配置方法。
可供机构开发人员对费用报销web表单进行二次开发时参考。
适用范围
EAS费用报销模块web二次开发人员
请注意:
本文件只作为产品介绍之用,不属于您与金蝶签署的任何协议。
本文件仅包括金蝶既定策略、产品及功能方面的信息,不能以本文件作为要求金蝶履行商务条款、产品策略以及开发义务的依据。
本文件内容可能随时变更,恕不另行通知。
概述
目的
根据标准web单据开发流程,描述以下内容:
●环境准备
●Web工程的创建
●元数据的定义和发布
●Web界面代码的生成
●Web界面代码的修正
●EASweb的部署和运行
●二次开发应用
●Web主界面的开发方法
范围
适用版本:
KingdeeEAS6.0,KingdeeBOS6.0
定义、首字母缩写词和缩略语
●AOM:
ApusicOperaMask,金蝶中间件公司的Web开发框架
●AAS:
ApusicApplicationServer:
金蝶中间件公司的J2EE应用服务器产品
●ExtJS:
一套基于JavaScript的浏览器端UI组件库
环境准备
jdk安装
jdk要求5.0以上版本。
pt环境准备
pt搭建一个gui的开发环境。
统一的web开发目录w:
\webdev
统一开发工作区间webdev/workspace
如图所示:
W:
\webdev\apusicstudio-5.1为开发工具,双击studio.cmd启动开发工具
Apusicstudio可以到获取。
更新和部署AOM
可以到获取AOM最新版本
部署easweb.ear
修改部署文件W:
\apusic\domains\server1\config\server.xml
加入 /eas/Server/server/deploy/easweb.ear"start="auto"/> 如图所示: easweb.ear结构如图: 修改W: \eas\Server\server\deploy\easweb.ear\eas_web.war\WEB-INF下operamasks.xml 开发那个项目将哪个项目的jar包配置项删掉。 如开发协同费用报销就将 如图: 将从cvs上获得的或开发完成的view(即xXXX.xhtml)拷贝到 W: \eas\Server\server\deploy\easweb.ear\eas_web.war 将从cvs上获得的开发完成的ManagedBean(即XXXXBean)拷贝到 W: \eas\Server\server\deploy\easweb.ear\eas_web.war\WEB-INF\classes 注: 以上路径没有包含包名,拷贝时需要将自己加上包路径,如cp\bc\ 如图所示: 启动服务器,以协同办公费用报销单为例: 可以通过 bizAccountBillList.jsf访问。 新建web工程 由于WAF目前混合使用ApusicStudio(WebUI开发)与BOSStudio(Web元数据定义与框架代码发布),所以是先进行web工程的新建还是先进行EAS元数据的定义,我们并没有严格的限制,可根据个人熟悉程度决定。 新建Apusic标准工程 我们使用Apusic作为我们的web容器,所以我们从新建Apusic标准工程开始我们的标准单据开发的旅程。 在Apusicstudio中点击“文件——新建——Apusic标准工程”,如下图: 包含以下几个点的定义: 项目名称,空间及存储位置选择,服务器选择,域选择及J2EE版本的选择,输出文件夹。 我们可以在此进行本地服务器的新建也可以在后续过程中添加服务器,为不影响新建流程的顺畅,我们将在后续步骤中单独描述。 J2EE版本的选择应该引起注意,我们须要选择5.0以上的版本。 定义好上述内容后点击完成,我们可以在打开包视图查看工程目录结构如下: 添加web模块 点击新建工程根目录,右键选择“新建——web模块”: 打开对话框如下: 需要注意源文件夹(用来存放源代码)及web内容文件夹(用来存放页面,配置信息等资源文件)。 点击下一步: EASweb应用框架建立在AOM基础上,所以我们不得取消“支持AOM”的选项。 AOM的配置中需要注意url后缀的配置,该配置意味该后缀的请求都将由AOM处理。 我们按习惯修改成*.jsf,定义好以后我们将可以在web.xml中发现相应的配置内容: 完成上述步骤,点击完成web模块的新建,我们发现工程目录下增加了src及WebContent目录: 新建faces页面 选择“文件——新建——Faces页面”: 选择是否生成managebean,以及managebean设置,如果只是新建一个静态视图,那么可以不进行managebean的定义。 点击完成页面新建。 添加Apusic服务器 前面在新建工程中已经提到服务器的选择,在此将对服务器新建做进一步描述。 在新建或增加服务器之前请确保已正确安装了Apusic服务器,Apusic服务器的安装再次不再累述。 打开Apusic服务器列表视图,在视图中点击右键,并选择增加服务器: 添加服务器后我们需要为我们的应用指定对应的Apusic服务器,打开工程属性对话框如下图: 运行我们的应用 服务器启动过程中我们可以在控制台看到相应信息,部分截图如下: 可以看到服务器已成功启动,我们定义的上下文根目录是mydemo,接下来我们使用进行访问,结果如下图: 至此,web工程的新建完成。 定义及发布元数据 元数据的定义在此特指单据实体及查询的定义,因为只有实体及查询才能发布成web界面,生成web界面代码。 实体及查询的定义与非web应用中实体及查询的定义一样,没有差别。 实体的定义和发布 与一般实体的定义和无差别 查询的定义和发布 与一般查询的定义和无差别 生成web界面代码 设置web界面代码路径 生成web界面代码前我们需要对生成代码的存放位置进行设置,在BOSStudio中通过“窗口——首选项”进入首选项配置页,左侧树形菜单中选择“BOS——生成web界面代码”: 将代码路径设置成我们web工程的源文件路径,将页面路径设置成我们web工程的web内容文件夹路径,点击确定完成设置。 生成web界面代码 接下来我们可以生成web界面代码: 选择要生成界面代码的实体或查询,点击右键并选择“生成web界面代码”: 回到Apusicstudio并刷新工程,我们可以看到工程目录如下图: 增加了相应的页面文件及逻辑代码。 通常一个实体通过上述步骤会生成以下几个文件: 编辑逻辑managebean及分录bean及相应属性文件: 编辑页面文件: 查询元数据生成web界面的过程与实体生成web界面的过程一样,只是结果文件不同: 列表逻辑managebean及相应属性文件: 序时薄页面文件: 至此,web界面代码的生成过程已经完成。 至于生成的代码内容大家可以打开相应文件细看,我们也将在后续部分中插述部分重要内容。 添加库文件 添加用户库 发布web界面代码并刷新web工程后我们的web工程出现了诸多错误,让我们看看究竟是什么原因引起了错误: 发布的界面代码找不到依赖的业务逻辑类。 我们需要添加用户自定义库。 在web工程的构建路径中引入W: \eas\dev下的boslib_for_eas.userlibraries和easlib_for_eas.userlibraries 添加WAF包 从W: \eas\Server\server\deploy\easweb.ear\eas_web.war\WEB-INF\lib下拷贝以下文件到工程目录的\WebContent\WEB-INF\lib中,当然你也可以通过在构建路径中引入外部jar包的方式配置。 添加业务逻辑类引用 这里指的业务逻辑相关类即发布元数据时生成的类文件。 我们有多种方式去引用这些类,由于业务的需要,我们可能需要修正这些类中的部分代码,所以打包加载的方式有些不方便,故建议在构建路径的源代码一项中添加关联目录: 选择元数据发布的源代码目录。 Web界面代码的修正 ***EditBean.java的修正 在EditBean的pageOnload()中有类似语句: 我们须要修正为: ***Edit.xhtml文件的修正 ●将#{messages['***}']形式的表达式都直接换成相应的信息,如#{messages['creator']}替换为creator或“创建人”。 ●将messages['entries.seq']替换为entries_seq或其他。 ●将 definename="entry>">修改为 definename="entry"> ●去除了多余字段。 ●将重新定义分录操作界面: 把biz: billEntryActions标签的内容替换为分录操作的自定义部分,可以如下: 修正前: billEntryActionsbeanName="#{phdemo.PhInWarehouseBillEditBean}"entryBeanName="#{phdemo.PhInWarehouseBillEntryBean}"> billEntryActions>
界面效果(点击操作按钮出错,且无具体提示信息):
修正后:
panelGridcolumns="3"style="float: right"> buttonid="addRow"value="新增"alwaysSubmit="true" immediate="true" action="#{phdemo.PhInWarehouseBillEntryBean.appendRow}"/> buttonid="insertRow"value="插入" alwaysSubmit="true"immediate="true" action="#{phdemo.PhInWarehouseBillEntryBean.insertRow}"/> buttonid="removeRow"value="删除" alwaysSubmit="true"immediate="true" action="#{phdemo.PhInWarehouseBillEntryBean.removeRow}"/>
panelGrid>
界面效果(新增):
***List.xhtml文件的修正
●将#{messages['***}']形式的表达式都直接换成相应的信息,如#{messages['creator}']替换为creator或“创建人”。
●将messages['entries.seq']替换为entries_seq或其他。
部署及启动easweb应用
部署EASWEB
EASweb应用必须与EAS应用服务(非web)场景同时使用,Eas统一的应用部署路径为W:
\eas\Server\server\deploy\eas.ear\eas_web.war\访问路径,我们需要做以下几个步骤的部署:
●拷贝工程下的scm_channel_web\web\WebContent\WEB-INF\classes
到W:
\eas\Server\server\deploy\eas.ear\eas_web.war\WEB-INF\classes
●拷贝scm_channel_web\web\WebContent下的相关文件
到W:
\eas\Server\server\deploy\eas.ear\eas_web.war
该部分的拷贝比较繁琐麻烦,我们提供了相应的批处理文件进行处理。
Pt环境下启动EAS服务
运行W:
\eas\Server\server\profiles\server1\bin\debugserver.bat
访问单据编辑页
访问
二次开发应用
修改业务单元
●打开金蝶bos,切换到金蝶bos业务建模透视图
●打开需要二次开发修改的单据,使用选用板添加字段,以报销单为例,如图所示:
发布业务单元
●在费用报销单界面里,单击右键,选择单据信息,确认不生成生成实现类,如图所示:
●在菜单选择费用报销单,单击右键,单击发布业务单元/报表即可。
执行升级脚本
在管理控制台或直接数据库中执行升级脚本,将新加字段添加到数据库相应的数据表中。
搭建web开发环境
●按照2、3、4、5步骤搭建web开发环境
修改web页面
●将eas\Server\server\deploy\easweb.ear\eas_web.war\cp\bc\bizAccountBillEdit.xhtml的页面内容,覆盖步骤5中生成bizAccountBillEdit.xhtml页面。
●在页面间将新添加的字段绑定,如下:
labelContainercaption="主题"style="margin-left: 120px;"width="270"lineWidth="80"> textFieldvalue="#{cp.bc.BizAccountBillEditBean.model.name}"required="false"maxLength="80"> textField>
labelContainer>
修改managedBean
●将eas\Server\server\deploy\easweb.ear\eas_web.war\WEB-INF\lib\cp_bc_web_jar
解压缩,反编译BizAccountBillEditBean.class,将内容覆盖步骤5生成的代码。
●修改代码逻辑
部署二次开发应用
●将修改的bizAccountBillEdit.xhtml,覆盖
eas\Server\server\deploy\easweb.ear\eas_web.war\cp\bc\bizAccountBillEdit.xhtml
●将修改的BizAccountBillEditBean后编译生成的BizAccountBillEditBean.class
重新拖入
eas\Server\server\deploy\easweb.ear\eas_web.war\WEB-INF\lib\cp_bc_web_jar包中,
替换原来的class文件。
常见问题
#{message[***]}ELExpression错误
目前不支持该种表达式显示信息,我们需要替换该表达式为实际要使用的信息,如:
将#{messages['***}']形式的表达式都直接换成相应的信息,如#{messages['creator}']替换为creator。
同样,我们需要将messages['entries.seq']替换为entries_seq或其他。
编辑界面单据体(分录部分)无法显示
将编辑页面的将 definename="entry>">修改为 definename="entry"> 如何检查调用类的物理路径 在调试过程中,在Display试图中如下调用方式: this.getClass().getResource("/com/kingdee/eas/cp/bc/web/TravelAccountBillListBean.class") 下载文件时会在线打开,且出现乱码(如何进行文件的下载) AOM使用原生态AJAX后文件下载出现该问题的解决,且不论在服务端中对response做何处理。 如果你去除f: view中renderKitId="AJAX"的设置,且保证不会影响页面其他功能,那当然是最好的解决。 此外可以通过重定向到下载页进行下载。 解决AOM的文件下载问题有两种方式,由于我们的实际应用场景中不是已存在文件的下载,需要与数据库等的交互,中断jsf生命周期的方式不可取。 故我使用了重定向新页面进行下载的方式,即在需要引入引出功能的页面上加入iframe框,并引用文件下载页面资源: windowid="exportDialog"width="350"height="210"modal="true"title="文件引出"> window> 在单一文件下载页面中不使用AOM的原生态ajax: 下载效果如下: 点击引出模板,将出现下载页面如下图: 表单编辑页中点击新增分录时出错 首先点击增加分录按钮时出错: #{phdemo.PhStockBalanceBillEntryBean.appendRow}: /phdemo/phStockBalanceBillEdit.xhtml@117,65action="#{phdemo.PhStockBalanceBillEntryBean.appendRow}": java.lang.NullPointerExceptionat__expression__(0)。 解决办法: 在 editDataGrid下增加jsvar="editEntryGrid" 相关内容请查看operamasks文档: 在EditBean或ListBean中,通过@IBOSBizCtrl设置了某个接口(如: @IBOSBizCtrlprivateIDocReceiveservice;),但发现在使用该接口service时,service为null 这时,需要检查APUSIC运行环境中的metas/entity_pkmapping.properties是否存在该service对应的entity. 因为,在发布元数据时,有可能没有将eneity_pkmapping.properties发布到apusic/metas,或没有将entity加入到entity_pkmapping.properties文件中 在view上找不到managedBean 检查managedBean的目录和bean的名称是否符合规范, 如果包名不一致或者文件名不一致都回出现此问题, 如HR的绩效模块(performance),新增一个View时, xhtml命名为MyPerf.xhtml,必须存在WebContent/hr/performance下, 而且对应的ManagedBean为com.kingdee.eas.hr.performance.MyPerfBean. 按钮或者其他控件的状态被缓存,如单据查看时某按钮被置灰后,新增时按钮仍是置灰的。 要在置灰状态的地方,将不符合置灰条件的按钮再显示的变亮。 因为managedBean可能定义为session的,所以存在会缓存状态的可能。 Web主界面开发方法 编制jsp页面。 在目录W: \eas\Server\server\deploy\eas.ear\cp_web.war\html\portlet新建一个目录,并在新建目录下创建一个jsp文件。 内容为: <%@includefile="/html/common/init.jsp"%> <%@pageimport="com.kingdee.bos.Context"%> <%@pageimport="java.util.Locale"%> <%@pageimport="com.kingdee.eas.util.app.ContextUtil"%> 注: src="../easweb/cp/index.jsf"就指向portlet的内容页。 配置portlet模板信息。 打开文件W: \eas\Server\server\deploy\eas.ear\cp_web.war\WEB-INF\portlets.xml 添加内容如下: Portlet业务配置信息设置。 打开文件w: \eas\server\deploy\eas.ear\cp_web.war\WEB-INF\tiles-defs.xml 添加内容如下: extends="portlet_default_eas50" controllerUrl="/PortletAssembleAction.do"> value="/html/portlet/cp/cp_index.jsp"/> Portlet基础定义设置。 通过上述配置后,还需要通过EAS管理控制台执行如下脚本,在数据库中插入一条记录,sql语句如下: InsertIntoT_Portal_Portlet(FID,FCreatorID,FCreateTime,FLastUpdateUserID,FLastUpdateTime,FControlUnitID,FPortletDefineId,FPortletName_L1,FPortletName_L2,FPortletName_L3,FEnable,FPortletNumber,FDescription_L1,FDescription_L2,FDescription_L3) Values(newbosid('0B344890'),'00000000
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EAS 费用 报销 模块 web 二次开发 指南