目录

1.NC 交互说明

  • 基于企业级 MA Server 开发
  • 结合 RIA 培训提供的环境,展示 MA Server 如何调取网关服务,获取 NC系统数据。

2.案例讲解

该案例的目的是使用企业级 MA Server 获取 NC 服务,数据仅以模拟数据,NC 具体接口参照相关接口文档。

2.1 获取 NC 数据过程

移动端通过 MA Server 获取 NC 数据,主要有一些几个过程:

  • 移动端向 MA Server 请求数据
  • MA Server 接收移动端的请求,通过网关服务向 NC 发出请求,这个
    过程包括以下过程:
    • (1) MA Server 解析移动端请求数据
    • (2) MA Server 组装调用网关服务的请求参数
    • (3) 调用网关服务
  • NC 接口实现,返回请求数据。
  • MA Server 获取数据(选取有用信息,拼成 JSON 格式),传给移动端
  • 移动端接收数据,展示数据

2.2 开发过程

移动端通过 MA Server 获取 NC 数据的过程,开发步骤如下:

2.2.1 NC 登录

注意:
1、Summer工程中使用summer.callService调用,参数相同
2、Summer工程中使用额外添加appid参数

平台提供 NC 登陆的服务,使用方法:

  1. function com$yyuap$nanchang$LoginController$loginnc(sender, args) {
  2. $ctx.dataCollect();
  3. var username = $ctx.getString("userName");
  4. var password = $ctx.getString("passWord");
  5. var dataparam = {
  6. type : "nc",
  7. method : "login",
  8. contextmapping : "none",
  9. success : "successMethod()",
  10. user : username,
  11. pass : password
  12. };
  13. $service.call("UMService.login", dataparam, false);
  14. }

支持 NC 登录服务说明:
网关服务:MAServer 安装下confconfigureappidservices.xml 必须有
【ncLoginService】接口说明

  1. <service id="ncLoginService" provider="nclocator" method="umLogin"
  2. returntype="uap.vo.umobile.UMResult">
  3. <properties>
  4. <params>context:uap.vo.umobile.UMContext</params>
  5. <interface>uap.itf.umoblie.IUapMoblieServ</interface>
  6. <security>false</security>
  7. </properties>
  8. <ds-set>
  9. <datasource name="uapma" />
  10. </ds-set>
  11. </service>

2.2.2 获取【销售订单】数据

MA Server 接收移动端的请求,通过网关服务向 NC 发出请求

(a) NC 服务开发

  • (1)NC 系统接口定义

    1. package nc.itf.mobile;
    2. import nc.vo.pub.BusinessException;
    3. public interface MobileSupport {
    4. public static final String QUERY_GROUPADMIN_FUNCNODE_SQL = "select gf.funcode from sm_gm_func gf ,sm_funcregister func where gf.funcode = func.funcode and func.isEnable = 'Y'";
    5. public String queryAllGroupManagerFuncode() throws BusinessException;
    6. public String getList(String searchinfor) throws BusinessException;
    7. }
  • (2)接口实现
    1. package nc.impl.mobile;
    2. import nc.itf.mobile.MobileSupport;
    3. import nc.vo.pub.BusinessException;
    4. import uap.json.JSONArray;
    5. import uap.json.JSONObject;
    6. public class MobileImpl implements MobileSupport {
    7. public String queryAllGroupManagerFuncode() throws BusinessException {
    8. return "张三";
    9. }
    10. @Override
    11. public String getList(String searchinfor) throws BusinessException {
    12. // TODO 自动生成的方法存根
    13. return "lisi";
    14. }
    15. }
  • (3)upm 文件

    (b) NC 服务发布

  • (1)配置 NC 服务对外接口
    【2016 年 10 月体验式培训环境】虚拟机:
    C:envUAP-HOMEinsysConfig.bat,打开配置工具,配置虚拟机的 IP(之 前 RIA 培训环境给的端口和数据源信息不更改)

    注意:
    如果对 UAP HOME 配置了对外的 IP,要想成功启动 UAP 客户端,需要 配置【窗口】—-【首选项】—-【开发配置】—-【客户端连接】
  • (2)启动 RIA 的虚拟机的中间件

    说明:
    开发环境发布服务,先清理 homeejb 下已经部署的服务—-启动 server
    生产环境发布服务:导出 NC 补丁包—-部署到 modules 下—-部署 ejb—启动 server

    (c) 移动端请求

    1. function loadData() {
    2. $service.writeConfig({
    3. "host" : "172.21.1.92", // 向configure中写入host键值
    4. "port" : "8080"// 向configure中写入port键值
    5. })
    6. $service.callAction({
    7. "viewid" : "com.yonyou.example.ExampleController", // 部署在MA上的Controller的包名
    8. "action" : "getData", // 后台Controller的方法名,
    9. "params" : {
    10. a : 1,
    11. b : 2
    12. }, // 自定义参数,json格式
    13. "callback" : "myCallBack()", // 请求成功后回调js方法
    14. "error" : "myErrCallBack()"// 请求失败回调的js方法
    15. })
    16. }

    (d) MA 处理移动端请求-网关服务

  • MA Server 解析移动端请求数据,参数解析
  • MA Server 组装调用网关服务的请求参数、调用网关服务:数据以 json 格式返回给移动端

    网关服务统一调用方式:
    1. IGatewayService service =GatewayServiceFactory.findGatewayService(appId, serviceId, paramsMap) ;
    2. Object result = service.doService();
    参数说明:
    a) appId:应用 id
    b) serviceId:请求的服务接口 id
    c) paramsMap:请求服务时的参数,要求 map 形式
    appId 说明: 调用网关服务的appId与项目下的.mspec 文件:application id=”XXX”一致,
    与MA Server 安装目录下的confconfigure 文件夹名称一致

    其他调用方式
    1. IServiceNode svr = GatewayNodeFactory.getGatewayNode(“ump_demo”).getServiceNode(“ssoLoginService”);
    2. IGatewayService service = GatewayServiceFactory.findGatewayService(svr, paraMap); Object retObj = service.doService();

    (e) NC 接口导入

    需要将网关服务使用到的 NC 接口,导入到 MA 中【导出 MP 包时,自动打包接口】;或者是导出 jar 包放到 modulesmobrt 下

    (f) 网关服务依赖的配置文件

    调用网关服务,需要在工程ma 的目录下三个个配置文件
  • (a)services.xml 配置:服务接口信息
    1. <!-- 新增 -->
    2. <!--Provider:为服务提供者 id 信息; Method:为接口中使用的方法名; Returntype:为接口方法的返回值类型(包含包名的类的全名);
    3. Params:为方法参数名称和参数具体类型; Interface:为调用后台服务的接口名称; 10 Security:为调用后台服务安全特征(true代表后台服务需要校验的token,false代
    4. 表后台服务不需要校验token) -->
    5. <gateway>
    6. <!--获取 NC 数据的服务; -->
    7. <service id="query" provider="nclocator" method="queryAllGroupManagerFuncode"
    8. returntype="java.util.String">
    9. <properties>
    10. <params></params>
    11. <interface>nc.itf.mobile.MobileSupport</interface>
    12. <security>false</security>
    13. </properties>
    14. <ds-set>
    15. <datasource name="nc633" />
    16. </ds-set>
    17. </service>
    18. <!--NC 登录服务; -->
    19. <service id="ncLoginService" provider="nclocator" method="umLogin"
    20. returntype="uap.vo.umobile.UMResult">
    21. <properties>
    22. <params>context:uap.vo.umobile.UMContext</params>
    23. <interface>uap.itf.umoblie.IUapMoblieServ</interface>
    24. <security>false</security>
    25. </properties>
    26. <ds-set>
    27. <datasource name="uapma" />
    28. </ds-set>
    29. </service>
    30. ...
    31. </gateway>
    services 配置文件的安全配置节“false”要与 upm 配置文件的“accessProtected=”false””一致。
    false:MA Server 是否要求发送 token
    NC upm 文件:“accessProtected=”false””调用接口是否需要 token
  • (b)datasources.xml 配置:url 表示要访问的服务的地址,ncds 则是配置的访问的数据源,services.xml 中的 datasource 需要在 datasources.xml 配置
    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <dsset>
    3. <datasource id="nc633" isdefault="true">
    4. <url>http://172.21.1.92:9091</url>
    5. <ncds>design</ncds>
    6. </datasource>
    7. </dsset>
    说明:
    172.21.1.92:9091 :nc 的 ip 地址和 port,此处是虚拟机中 UAPHOME 对外的 ip ,port
    design:nc 数据源
  • (c) provider.xml配置:用于设置几种服务调用的方式,该文件不需要修改
    uap 服务类:
    1. <provider-set>
    2. <provider id="nclocator"
    3. class="com.yonyou.uap.um.gateway.service.NCLocatorGatewayService" />
    4. <provider id="http"
    5. class="com.yonyou.uap.um.gateway.service.HTTPGatewayService" />
    6. <provider id="jdbc"
    7. class="com.yonyou.uap.um.gateway.service.JDBCGatewayService" />
    8. <provider id="u8http"
    9. class="com.yonyou.uap.um.gateway.service.U8HTTPGatewayService" />
    10. </provider-set>

    (g) 启动 MA 服务,调试

    注意:检查 MA 启动后,MAhomeconfconfigureappid 下,网关服务的配置文件是否更新到最新。

    3.注意事项

  • MA Server 的 IP、port,启动后保证手机可连通
  • MaServerconfconfigure 配置文件:保证配置文件正确
    • a)修改 datasources.xml 中 IP 和端口号
    • b)网关调用的服务在 services.xml 可找到
文档更新时间: 2018-01-16 10:11