U8cloud公有云客开培训U8C供应链制造开发部万多乐部门经理2018年3月10日用友网络科技股份有限公司目录01U8C公有云客开支持场景介绍02基于外部交换平台开发03基于事件机制开发04基于预警和后台任务开发用友网络科技股份有限公司05基于OpenAPI开发06公有云客开补丁管理流程U8C公有云客开支持场景01用友网络科技股份有限公司·外部交换平台数据传递·事件扩展机制·预警与后台任务·OpenAPI开放平台1用友网络科技股份有限公司信息交换平台外部数据交换平台主要用于外部系统和U8cloud系统进行集成。利用外部数据交换平台,可以将外系统的基本档案和业务数据发送到U8cloud系统中,并进行相关的业务操作,如审批、弃审,也可以通过发送XML格式的查询条件导出U8cloud系统的数据(需业务插件支持),导出的数据可以附着在回执文件中,也可以直接向外部系统回发HTTP请求。外部交换平台数据传递2用友网络科技股份有限公司U8C集成开发平台信息交换平台配套的二次开发向导工具,利用这个工具,可以非常方便的给U8C系统里还没有集成功能的单据,或者用户自定义的单据,快速添加集成的功能。外部交换平台数据传递3用友网络科技股份有限公司U8C事件扩展机制U8C产品引入了类似Swing的事件机制,在对数据做增、删、改、等操作时会产生相应的事件,我们可以通过监听这些操作前后发出来的事件来扩展相应的处理逻辑。事件扩展机制4用友网络科技股份有限公司预警与后台任务开发业务预警主要针对业务做合理的阈值设置实现企业业务监控,协作企业及时作出决策和相应。后台任务主要用于处理高资源消耗性的任务,这类型的任务可以在系统空闲的时候在后台处理,提升系统的工作效率。预警与后台任务5用友网络科技股份有限公司OpenAPI开放平台OpenAPI开放平台是U8C重点规划和发展的方向,通过OpenAPI实现生态融合,OpenAPI接口将逐步开放,最大限度的支持U8C公有云客户化开发、扩展和集成的需求。OpenAPI开放平台基于外部交换平台开发02用友网络科技股份有限公司·注册外部交换平台插件·第三方系统数据导入U8C支持方式·U8C系统数据导出支持方式·目前外部交换平台支持的单据介绍·外部交换平台数据集成开发示例1用友网络科技股份有限公司注册外部交换平台插件从[二次开发工具]-[集成开发工具]打开单据集成开发,然后在左边选择功能节点导航,选中相应的需要进行交换功能开发的单据节点,点击菜单项的信息交换平台-插件开发,出现信息交换平台的二次开发向导工具。基于外部交换平台开发——注册外部交换平台插件2用友网络科技股份有限公司单据插件信息注册[单据标识]一般填写相应的单据类型即可,如果没有单据类型,比如基础档案,可以取一个能唯一标识当前档案的名称。比如销售订单为”30”。[业务操作]选择框,常见的业务操作有add、update、delete、query、audit、unaudit…等等。[导入范围]选择框,表示该单据是否只能导入到集团,还是只能导入到公司,或者集团公司均可[插件类名称]针对该单据+选定的业务操作,实现的插件处理类。[扩展插件类名称]这个主要是为了兼容以前版本的老插件而设置的,因为老的插件不符合新的接口规范,如果新开发交换插件,此处无需填写。[VO类型]根据单据在U8C内部的VO结构的不同,我们将其分为三类:单表、主子表和多子表。基于外部交换平台开发——注册外部交换平台插件3用友网络科技股份有限公司生成&配置交换规则定义文件配置好单据注册相关信息后,就可以自动生成交换规则定义文件的大纲了,之所以叫大纲,是因为生成后的文件,还需要进一步配置,比如对需要翻译的字段配置参照档案等。首先是设置一些生成参数,以决定是否重新生成,生成通用的规则定义文件,还是针对特定外部系统生成等。基于外部交换平台开发——注册外部交换平台插件4用友网络科技股份有限公司辅助信息项设置利用交换平台做数据交互时,业务数据一般都放在具体的XML文档中,但是,发送过程中往往还有一些数据,并不需要也不能写到每个具体的XML文档里,这些数据,用户往往需要根据当前的发送方、接受方、单据类型及具体的业务场景进行设定,比如说发送凭证时,针对凭证表头表体的控制参数是根据不同的发送方、接受方、及凭证类别由用户灵活控制的;另外如存货基础档案发送到集团时,用户也需要配置,档案可以分配到那些公司。诸如此类的信息,在交换平台中称之为辅助信息。辅助信息分设计态和运行态,设计态是指从程序开发的角度,交换平台提供了一个类似数据池的数据存贮区,插件开发人员先定义当前单据所需要的辅助信息项目,比如上面所说的凭证控制信息、存货的分配公司等。插件开发人员借助信息交换平台辅助信息这个数据池,存放一些特定的项目,在运行态时收集用户的设置,最终用插件处理这些用户的设置信息。基于外部交换平台开发——注册外部交换平台插件5用友网络科技股份有限公司辅助信息项设置【插件全路径类名】根据单据注册信息自动带过来,不能修改。【包含测试代码】如果选中此项,生成的代码中会包含测试代码,主要是将转换后的VO序列化到后台,最终在前台进行展现,以便开发人员观察转换后的VO是否正确,便于定位错误。仅适合在测试时使用,最终代码开发时一定要删除测试代码。【包含导出代码】如果选中此项,会生成如何将VO转换为XML文档的代码实例,以便开发人员参考。选择生成代码的存放路径,便可以按“生成”,生成代码。这个代码是插件的通用框架,如果有辅助信息或者其他的业务处理,请自行拷贝到Eclipse修改。修改好的代码也可以拷贝到这里,进行编译(中间件需要设置参数enableHotDeployed=true),然后便可以测试了。基于外部交换平台开发——注册外部交换平台插件6用友网络科技股份有限公司交换平台测试测试前面步骤配置是否正确。基于外部交换平台开发——注册外部交换平台插件7用友网络科技股份有限公司导出和插件相关的配置文件该步骤可以导出之前配置的和插件相关的配置文件。基于外部交换平台开发——注册外部交换平台插件1用友网络科技股份有限公司手动界面发送这是外部数据最简单也最常用的一种客户端发送方式,点击:[应用集成]→[信息交换平台]→[手工加载界面],在打开的界面中选择需要发送的文件,如有必要,修改目标URL地址的receiver参数值,选择“发送”菜单即可。基于外部交换平台开发——第三方系统数据导入U8C支持2用友网络科技股份有限公司后台预警发送[企业建模平台]→[预警平台]→[预警条件配置]→[条目配置]→[增加],在弹出的预警条目设置对话框中配置一个类型为“外部交换数据后台发送”的预警条目。在该预警条件标签页中内置了四个预警条件:1、待发送文件目录:该预警条件阈值用于设置用户数据文件目录(不能为空);2、回执目录:存放单据导入之后的回执信息的目录,每张单据一个回执文件,如果用户不设置这个阈值,系统在待发送文件目录下默认创建目录/logdir作为回执目录。发送后文件转移目录:文件备份使用。发送配置信息:见下一页PPT。基于外部交换平台开发——第三方系统数据导入U8C支持用友网络科技股份有限公司后台预警发送配置信息基于外部交换平台开发——第三方系统数据导入U8C支持发送配置信息:该预警条件阈值是一个可扩展的预警条件阈值,它用于配置将什么样的文件发送到哪个URL地址(不能为空)。第一部分是单据类型:第二部分是外系统编码:第三部分是目的URL地址:上面所列发送配置信息项取值的意思就是将单据类型是“Test1”,外部系统编码为“1101”的文件发送到U8C外部数据接收的Servlet地址:urladdress=http://localhost:80/service/XChangeServlet?account=0001&receiver=yy。这个地方如果我们将单据类型的取值设为“XX”或“xx”的话,表示任何单据类型的文件都可以往某个地址发送,相当于通配符的意思,但对于外部系统编码没有通配符。34用友网络科技股份有限公司发送配置信息扩展发送配置信息是一个可扩展的预警条件阈值,意思就是用户可以在预警平台的类型注册对话框中修改名为“外部交换数据后台发送”的预警类型定义,增加作为预警条件的发送配置信息项,以实现数据文件的多点发送。在上一步的菜单中选中“外部数据交换后台发送”行,点击修改按钮,弹出“类型注册”对话框,为其增加一个发送配置信息阈值项。需要注意的是该新增阈值项的名称必须以字符串“postconfig”开头,如“postconfig1”、“postconfig2”等。这样配置更多的发送配置信息,使得能有选择地将某个特殊单据类型特殊外部系统的数据文件能够发送到某个指定服务器地址去。配置完毕,即可由预警平台调度和执行发送任务。在待发送文件目录、回执目录和发送后转移目录配置的文件路径指的是服务器端的文件路径。基于外部交换平台开发——第三方系统数据导入U8C支持5用友网络科技股份有限公司自定义程序发送外系统对接U8C外部交换平台上传报文时,需要对报文进行加密处理,同时平台会进行权限校验(要求上传可以唯一标识友户通用户身份的accessToken)。外系统通过后台程序对接U8C做数据导入可以参考双U(U8与U8C凭证对接)方案。基于外部交换平台开发——第三方系统数据导入U8C支持6用友网络科技股份有限公司自定义程序发送获取到友户通的token以后,可以建立与U8C的连接,数据导入U8C可以导入已经生成的XML落地文件,也可以直接传对应的文件流到U8C。基于外部交换平台开发——第三方系统数据导入U8C支持1用友网络科技股份有限公司查询插件注册单据插件注册,查询的业务操作需要注册add方式。其他的步骤和之前配置导入模式是一样的。基于外部交换平台开发——U8C系统数据导出支持方式2用友网络科技股份有限公司导出U8C数据示例代码通过XML格式传递需要查询单据的查询条件,调用接口返回查询结果。此处的示例是查询银行档案数据,通过银行档案标准的服务接口:IBankDocQueryService查询档案数据,然后通过IPFxxEJBServicerunner=PfxxUtils.lookUpPFxxEJBService();服务导出标准格式的数据。基于外部交换平台开发——U8C系统数据导出支持方式3用友网络科技股份有限公司导出U8C数据示例代码异常处理使用thrownewPfxxPluginException(this.getClass().getName(),"导出单据失败:"+e.getMessage());方式处理,该异常处理类已对外部交换平台导出数据异常做了封装。基于外部交换平台开发——U8C系统数据导出支持方式用友网络科技股份有限公司基于外部交换平台开发——U8C集成开发示例演示外部交换平台数据集成开发示例基于事件机制开发03用友网络科技股份有限公司·基础知识介绍·目前支持的业务范围·开发过程示例讲解用友网络科技股份有限公司大部分基本档案引入了类似Swing的事件机制,在档案的增、删、改、封存操作时会产生相应的事件。如果需要在这些操作发生前或发生后增加一些业务处理(比如删除档案前需要校验是否有单据引用,或者客商合并后需要更新单据引用的pk)把这些业务处理逻辑封装成对相应事件的监听类,注册到系统中。注册的信息保存在表bd_interfaceexec中。所有的监听类都必须实现接口IBDOperate。其他的业务单据目前没有此机制,后续逐步完善。基于事件机制开发——基础介绍用友网络科技股份有限公司参数含义:Fun_code:档案结点号,表明当前事件是属于哪个档案。OpType:当前的事件类型,即是增加或是删除或者其他等等。Pk1:当前操作的档案的主键。Pk2:大部分情况下无意义。仅在特殊操作,比如档案新增下级等操作才有意义。需要参看具体档案的文档。Bd_docData:不同情况下意义不同。需要参看具体的档案的文档。基于事件机制开发——基础介绍IBDOperate接口有两个方法,分别为beforeOperate和afterOperate,其声明如下所示:publicvoidbeforeOperate(Stringfun_code,intopType,Stringpk1,Stringpk2,Objectbd_docData)throwsBusinessException;publicvoidafterOperate(Stringfun_code,intopType,Stringpk1,Stringpk2,Objectbd_docData)throwsBusinessException;这两个方法分别在监听的事件开始前和结束后调用,其参数基本一样。1IBDOperate接口用友网络科技股份有限公司对于事件类型(即参数opType的取值),IBDOperate接口中定义了一些常见的事件这里列举出来的是常见的一些事件类型,对于个别的档案可能会有它特有的事件类型定义,这也需要查看各个档案的具体文档。参数bd_docData用来解决在很多的事件中需要比当前操作的档案主键更多的信息的问题。其具体类型可能随不同的档案或业务组件的不同事件而不同。基于事件机制开发——基础介绍2事件类型用友网络科技股份有限公司这个接口里getNewVO和getOldVO分别返回的是修改前和修改后的档案VO。如果是新增或删除操作则getOldVO返回null.方法getContextInfo是一个用来应付扩展的属性,一般为null,实际使用中的具体含义要看相应档案的文档。getBaseVO是为满足总账辅助核算同步更新档案的名称编码而增加的。IBDBaseDoc有三个方法分别返回档案修改后的名称编码和主键。同样这个方法在新增和删除没有意义。一般来说,监听处理程序仅需要getNewVO和getOldVO返回的两个VO就可以完成大部分的业务逻辑了。基于事件机制开发——基础介绍3IBDOperateContextObject对于修改(BDOPERATION_ALTER)事件,bd_docData都统一为IBDOperateContextObject。其定义如下:publicinterfaceIBDOperateContextObject{publicabstractIBDBaseDocgetBaseVO();publicabstractObjectgetContextInfo();publicabstractObjectgetNewVO();publicabstractObjectgetOldVO();}用友网络科技股份有限公司数据库表:bd_interfaceexec各主要字段介绍Funcode:为节点号,如果要监听所有的档案则可以注册为”ALL”Interfaceclassname:IBDOperate的实现类名。Opertype:操作类型此处以部门档案为例讲解,其它档案详见:《U8cloudV1.0-事件通知技术红皮书》基于事件机制开发——支持单据范围支持事件机制的档案1用友网络科技股份有限公司基于事件机制开发——开发示例基于事件机制的扩展开发示例基于预警和后台任务开发04用友网络科技股份有限公司·基础知识介绍·业务插件接口介绍·开发示例演示用友网络科技股份有限公司简介及开发步骤适用人群:本指南适用于基于任务中心进行二次开发的开发人员。开发步骤:1)开发人员先实现规定的接口;2)注册任务类型;3)测试插件条目。依照条目定义,或打开节点,或登录系统,或定制时间。并查看消息是否如插件所意。业务插件接口定义预警类型时必须提供做业务检查的业务插件,由开发人员编写。该业务插件必须实现预警业务插件接口。预警服务运行时,根据定义的预警条目执行业务插件的适当业务,并将产生的预警信息写入预警文件,进行企业业务预警。基于预警和后台任务开发——基础知识介绍用友网络科技股份有限公司定义预警类型时必须提供做业务检查的业务插件,由开发人员编写。该业务插件必须实现预警业务插件接口。预警服务运行时,根据定义的预警条目执行业务插件的适当业务,并将产生的预警信息写入预警文件,进行企业业务预警。基于事件机制开发——基础介绍1业务预警插件接口业务预警插件接口1nc.bs.pub.pa.IBusinessPlugin最普通最原始的接口,一般用于定时的预警条目,也可以用于即时预警条目,但执行时不能向插件传入客户端的登陆信息(包括用户主键、公司等信息)。业务预警插件接口2nc.bs.pub.pa.IBusinessPlugin2它是nc.bs.pub.pa.IbusinessPlugin的子类,适用于当业务插件的实现需要客户端的登录信息参数的情况。业务预警插件接口3nc.bs.pub.pa.IBusinessPlugin3也是nc.bs.pub.pa.IbusinessPlugin的子类。适用于插件的实现需要传递主体账簿的接口。PS:以上接口详细代码示例见:《二次开发培训-20180302.docx》文档。用友网络科技股份有限公司基于事件机制开发——开发示例基于预警和后台任务开发示例基于OpenAPI开发05用友网络科技股份有限公司·OpenAPI能支持的客开内容·OpenAPI规划支持的范围·OpenAPI应用示例基于OpenAPI开发——U8COpenAPI整体介绍U8COpenAPI融合取数控制标准数据传输接口系统集成标准查询API操作拦截数据控制U8COpenAPI一期即将在419上线,后续会逐步完善,目标是通过OpenAPI支撑客户化开发,连接行业云,实现生态伙伴融合。用友网络科技股份有限公司010304021期:采购订单、销售订单、采购入库单、库存其它出库单、库存其它入库单、现存量查询。2期:到货单、采购发票、材料出库单、销售出库单、销售发票、请购单等|供应链领域看市场需求制定API开发计划,目前来看更多先考虑与条码融合相关的API优先纳入开发计划。|生产制造1期:人员、部门、存货、仓库、科目等2期:其他基础档案基础档案|1期:凭证、应收单、收款单、应付单、付款单。2期:看市场需求财务领域|用友网络科技股份有限公司基于OpenAPI开发——OpenAPI规划支持范围公有云客开补丁管理流程06用友网络科技股份有限公司·什么样的补丁可以在公有云环境执行?·公有云客开补丁上传与下载流程·公有云客开补丁维护PS:详见《U8C公有云二次开发补丁规范及部署流程.pdf》用友网络科技股份有限公司01