u8c开发入门培训_第1页
u8c开发入门培训_第2页
u8c开发入门培训_第3页
u8c开发入门培训_第4页
u8c开发入门培训_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

U8cloud开发入门培训U8CHR开发部王立高级开发工程师2018年3月6日目录01搭建开发环境02U8C数据库持久化技术03开发一个普通单据04开发一个支持审批流的节点搭建开发环境01搭建开发环境本文软件开发环境操作系统:Windows10数据库设计工具:SybasePowerDesigner(以下简称PD)数据库:MSSQLServer2012开发工具:Eclipse3.8.22.建立开发工程打开eclipse,新建MDE工程。如果是在原工程增加节点,则省略此步。用友网络科技股份有限公司新建工程用友网络科技股份有限公司UAP集成开发配置选择U8CHOME配置数据源支持3种数据库用友网络科技股份有限公司U8C数据库持久化技术02U8C数据库持久化技术在U8C中很多时候需要我们直接操作数据库,对数据库的访问U8C提供了框架类。JDBCFrameWork为U8C访问数据库提供统一的数据操作访问,简化数据访问操作。BaseDao是在JDBCFrameWork之上提供数据持久化的工具类。下图是U8C数据库访问的层次图:用友网络科技股份有限公司核心类介绍PersistenceManager管理连接会话的生命周期,并提供了对单表VO操作的常用实现;可以传递构造参数选择不同的数据源。

JdbcSession对JDBC的API封装和简化SQLParameter封装执行SQL的参数ResultSetProcessor结果集处理回调接口,封装结果集处理DbException封装不同数据库的异常,和统一处理不同数据库的ErrorCodeBaseDAO/IUAPQueryBS/IVOPersistence管理连接会话的生命周期,提供了对单表VO操作的常用实现用友网络科技股份有限公司JdbcSession几种参数语法无参查询Stringsql="select*frombd_deptdoc";//构造查询语句Listlist=(List)session.executeQuery(sql,newArrayListProcessor());有参查询Stringsql="select*frombd_deptdocwheredept_code=?";SQLParameterparam=newSQLParameter();//构造参数对象param.addParam(“aaa”);//添加参数Listlist=(List)session.executeQuery(sql,param,newArrayListProcessor());用友网络科技股份有限公司JdbcSession几种参数语法有参更新Stringsql="updatebd_deptdocsetdept_code=‘aaa’wheredept_code=?”;SQLParameterparam=newSQLParameter();//构造参数对象param.addParam(“bbb”);//添加参数session.executeUpdate(sql,param);无参批量更新Stringsql="updatebd_deptdocsetdept_code=‘aaa’wheredept_code=‘bbb’";session.addBatch(sql);//添加需要执行的同构SQLintrows=session.executeBatch();//执行用友网络科技股份有限公司特殊参数Null参数param.addNullParam(java.sql.Types.INTEGER);Blob参数param.addBlobParam(newObject());Clob参数param.addClobParam(newString());用友网络科技股份有限公司结果集合操作对查询结果集合的操作,主要由ResultProcessor类来实现,这是一个接口ResultProcessor包含有一个简单的方法,不同的ResultProcessor实现返回不同的结果对象。系统提供了一系列常用的默认实现。用友网络科技股份有限公司结果集合ArrayProcessor数组处理器,返回一个对象数组,结果集中只有一行数据,其中结果集中每一列对应数组的一个元素。ArrayListProcessor数组集合处理器,返回一个ArrayList集合,集合中的每一个元素是一个数组,每个数组对应结果集中的一行数据,其中结果集中每一列对应数组的一个元素。MapProcessorHashMap处理器,返回一个HashMap,结果集中只有一行数据,其中结果集合中每一列的列名和列值对应HashMap的一个关键字和相应的值。MapListProcessorHashMap集合处理器,返回一个ArrayList集合,集合中的每一个元素是一个HashMap,每个HashMap对应结果集中的一行数据,其中结果集合中每一列的列名和列值对应HashMap的一个关键字和相应的值。BeanProcessor

值对象处理器,返回一个JavaBean,结果集中只有一行数据,该处理器能自动把结果集中的值按列的名称映射到javaBean中,如:结果集中有名称为”name”的字段,那么只要该java对象中有getName()方法就能把结果集合中”name”对应的值映射到对象中。BeanListProcessor值对象集合处理器,返回一个ArrayList集合,集合中的每一个元素是一个javaBean,每个javaBean对应结果集合中一行数据,其中每个JavaBean中的数据映射关系和BeanProcess同理。还有ColumnProcessor,BeanMappingListProcessor,BeanMappingProcessor几个类用友网络科技股份有限公司BeanListProcessor作为结果集的例子ArrayListlist=(ArrayList)session.executeQuery(sql,param,newBeanListProcessor(TrainReqmatbillVO.class));//TrainReqmatbillVO是一个普通vo类intlistcount=list.size();TrainReqmatbillVO[]vos=newTrainReqmatbillVO[listcount];for(inti=0;i<vos.length;i++){

vos[i]=(TrainReqmatbillVO)list.get(i);}用友网络科技股份有限公司单表对象持久化-前台数据访问使用IVOPersistence服务组件,进行增删改操作;使用IUAPQueryBS服务组件,进行查询操作。-后台数据访问使用BaseDAO工具类,进行单表对象的CRUD操作;使用PersistenceManager,进行单表对象的CRUD操作。-U8C系统中特殊的单表VO值对象,已经包含了对象表映射信息-UAP集成开发工具自动生成使用规则SuperVO用友网络科技股份有限公司开发一个普通单据03基本概念单据:比如报销时的报销单,一般由表头和表体组成(有些时候还含有表尾)。表头中包含了单据的主信息,比如日期、部门、预算项目;表体包含了单据的明细信息,比如具体的事项和金额。单据类型:一个业务系统为了使结构更清晰,通常也是分层的。比如,供应链系统包含了采购、库存等子系统,每个子系统都具有一个系统类型,而每个子系统都会具有很多张单据,为了区分这些单据,为每张单据命名一个单据类型,作为唯一标识。模板:单据开发涉及到三大模板(单据模板、查询模板、打印模板)。单据模板定义了单据的显示外观和基本框架,查询模板定义了单据的查询对话框,打印模板定义了单据信息打印到打印机的样式和格式。VO:值对象,用作传输数据的载体。聚合VO:单据一般由表头和表体构成,因此单据的数据表通常设计成主表和子表。聚合VO是对单据数据的抽象,它用于装载主表VO和一组子表VO。UI工厂:虽然能通过三大模板定义出单据的显示,但每张单据都有一些公共的或特殊的行为。UI工厂是一种单据开发框架,它将常用单据抽象成了很多类型,因此,UI工厂相当于是单据开发的代码模板,预置了单据的各种公共行为,比如增、删、改、查,并且可以连接到U8cloud流程平台,支持审批、单据驱动等应用。用友网络科技股份有限公司单据开发主要流程U8cloud平台对开发过程进行很多抽象和封装,使得单据开发变得非常容易。一般地,开发环境中,开发一个单据主要包括以下步骤:第一步、PowerDesigner中建立单据的物理模型(数据库表),保存成pdm文件(xml);第二步、利用PowerDesigner生成单据的建表脚本(SQL语句),在数据库中执行此脚本建立数据库表结构;第三步、利用U8cloud二次开发平台中的数据字典生成工具导入pdm文件,生成相应的数据字典;第四步、利用企业建模平台中的模版管理生成单据模版,将单据涉及的数据表生成VO对象;第五步、以UI工厂为基础,应用Template模式,编写自己的单据类。用友网络科技股份有限公司生成pdm步骤第一步、启动PD,会出现如下界面,选择新建一个物理模型。用友网络科技股份有限公司生成pdm步骤第二步、点击确定后左侧面板中会出现一个节点,右键properties后弹出画面,设置此模型的name,code等。用友网络科技股份有限公司生成pdm步骤第三步、在新建节点上点击右键选择New->Table或者点击右侧Toolbox,拖动下图圈选图标至主面板。先点击这个图标,然后在面板空白处点击,出现一个table,双击弹出右边的属性界面用友网络科技股份有限公司生成pdm步骤第四步、在Columns选项卡中定义列,列的中文描述。注意此处列的数据类型,一般地,主键前缀为pk_,数据类型为char(20),boolean类型的列前缀为b,数据类型为char(1),日期类型前缀为d,数据类型为char(10)等。用友网络科技股份有限公司数据库表pdm及SQL脚本的生成用友网络科技股份有限公司导入数据字典数据字典是U8cloud二次开发工具中探测数据库表结构的数据基础,而不是采用每次需要数据都连接数据库的方式。数据字典由上一步骤生成的pdm文件生成,U8cloud二次开发工具提供了相应的生成工具。步骤如下:第一步、启动U8cloud企业建模平台,选择菜单系统管理工具->数据字典管理。用友网络科技股份有限公司导入数据字典第二步、在弹出的界面中,选择菜单项工具->导入数据字典。用友网络科技股份有限公司确认数据字典是否导入成功在数据字典管理节点,点击查找,根据编码查找用友网络科技股份有限公司生成VOVO值对象是数据传递的载体,其结构和数据库表结构紧密相关。一般我们在一个专门的包中存放VO对象,VO对象命名规则表现为类名以VO结尾。U8cloud二次开发工具中也提供了相应的工具,用于生成数据库表的VO类。

首先要生成的SQL脚本,生成数据库表。建立了数据库表后就可以手动生成VO了。

第一步、启动企业建模平台二次开发平台,选择集成开发工具。用友网络科技股份有限公司生成VO用友网络科技股份有限公司功能注册用友网络科技股份有限公司自定义菜单新建的功能节点,可以自定义菜单,修改菜单的位置。用友网络科技股份有限公司权限分配

权限管理中引入了“角色”概念。先规划好各种角色并分配权限,再将用户与角色关联起来,将角色作为桥梁把“用户”和“权限”连接起来。换句话说就是:通过规划好各种角色先将用户分类,再为各类用户分配权限。用友网络科技股份有限公司建立单据模板第一步,输入单据模板类型,再点显示模板第二步,选择对应的主子表第三步,增加用友网络科技股份有限公司建立单据模板弹出的界面的右上是我们刚才选择的数据表,左上为表头部分,左中为表体部分。左键单击选中主表(wa_tm_apply_main)不放,拖动到表头区域松开,此时会弹出对话框。用友网络科技股份有限公司建立单据模板同样的方法,我们可以把一个子表拖到表体位置,再拖另外一个表体的时候我们先右键点这个按钮用友网络科技股份有限公司建立单据模板把开始新建的项目删除掉。用友网络科技股份有限公司单据模板项目显示属性与高级属性单据模板相应区域,项目上点击右键可以新加项目,项目排序;在编辑区选择某个属性控件后可以在右下方的属性编辑区进行属性编辑。可以设置其可见性、是否必输项、参照信息等属性。在高级页签可以设置数据类型,编辑,显示公式。数据类型选择参照时,可以通过下拉框选择系统内置的参照。

对于一些字段我们可能需要显示公式,编辑公式。显示公式界面加载时会执行,编辑公式在编辑框发生改变时会被执行。用友网络科技股份有限公司根据单据模板生成查询打印模板用友网络科技股份有限公司建立工程包结构Public目录存放接口和公共代码(比如VO和公共算法)Private目录存放实现和其它实现细节Client目录存放客户端代码META-INF目录存放模块配置文件目录,包括module.xml文件和xxx.upm接口配置文件。详细代码结构请看视频讲解。用友网络科技股份有限公司各个目录区别与关系用友网络科技股份有限公司配置文件规范用友网络科技股份有限公司后台接口packagenc.itf.sample;

public

interfaceIHelloWorld{ StringsayHello(StringtoName);}packagenc.impl.sample;

importnc.itf.sample.IHelloWorld;

public

classHelloWorldImplimplementsIHelloWorld{

publicStringsayHello(StringtoName){ StringretValue="Welcome"+toName+"exploreU8C"; System.out.println(retValue);

returnretValue; }}用友网络科技股份有限公司部署组件<?xmlversion="1.0"encoding="gb2312"?><module

name="nc.itf.ncdemo.ejb.NCDEMOSpublicEJB">

<public>

<component

priority="0"

remote="true"

singleton="true"

supportAlias="false"

tx="CMT">

<interface>nc.itf.sample.IHelloWorld</interface>

<implementation>nc.impl.sample.HelloWorldImpl</implementation>

</component>

</public></module>编辑或新建该产品模块下的模块部署描述文件(META-INF下的ncdemo.upm文件),加入一个公共组件:远程组件只要指出他的remote属性为true即可。用友网络科技股份有限公司Junit客户端调用packagenc.ui.sample;importmon.NCLocator;importnc.bs.framework.test.AbstractTestCase;importnc.itf.sample.IHelloWorld;public

classTestHelloWorldRemotInterfaceextendsAbstractTestCase{

public

voidtest123(){

try{ IHelloWorldhello=(IHelloWorld)NCLocator.getInstance().lookup(

"nc.itf.sample.IHelloWorld"); System.out.println(hello.sayHello("u8c")); }catch(java.lang.ThrowableivjExc){ ivjExc.printStackTrace(); } }

publicTestHelloWorldRemotInterface(){

super(); }

protected

StringgetHost(){

returnSystem.getProperty("nc.host","localhost");

}}用友网络科技股份有限公司UIFrame框架实现层结构图数据通讯机制-观察者模式按钮管理状态管理标准动作实现开发一个支持审批流的节点04升级demo支持审批流用友网络科技股份有限公司增加单据类型用友网络科技股份有限公司增加单据类型项目说明:类型代码:手工输入,最大长度为4个字符,可以输入字母和数字,不允许重复。类型名称:业务单据名称,手工输入,不允许重复。单据大类:表示单据类别,用于区分单据类型的主子关系。节点编号:标识单据类型的关联UI,一般为关联的制单功能节点编码。审批节点编号:标识单据类型的关联UI,一般为关联的审批维护类功能节点编码。主表参照的固定条件语句:被其它单据参照时自己填写的固定的SQL条件语句。参照查询对应的DMO类:用于查询单据VO数据的业务逻辑类。必须实现接口nc.bs.pub.pf.IQueryData以及nc.bs.pub.pf.IQueryData2(参见后面章节)。审批流检查类:通过编写审批流检查类,并在该类中实现审批流相关接口,来达到使用审批流管理业务单据以及控制审批流行为的目的(参见后面章节)。实现IcheckState,IbackCheckState(可不实现)的接口的DMO类文件会计平台类:财务会计平台所需的类。实现IaccountProcMsgIAccountRetVoucher的接口的DMO类文件是否项目核算:项目是否参与核算。是否为根节点:针对单据大类,用于实现单据主子关系。是否发送会计平台:用于财务会计平台。如果该单据不直接传送财务会计平台,则不选择自定义1(def1)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论