欢迎使用普元产品知识库,本知识库包含普元应用开发平台EOSPlatform,流程平台BPS,企业服务总线ESB,微服务平台Microservice,运维管理平台Devops,数据集成平台DI

页面树结构

欢迎使用普元文档库

Skip to end of metadata
Go to start of metadata

  创建中介服务

选择业务Module下的中介服务,依次点击右键->创建->中介服务;

 

说明:

选择类别:可选可输,定义中介服务的类型,如:json、jsonToXml等;

文件名称:中介服务的名称,建议采用服务名命名加类别名称,如:Submit_json;

显示名称:建议与文件名称一致;

描述信息:默认缺省。建议对该中介服务进行备注描述;

  编辑中介服务

(一)   Java代码编写

选择对应业务Module下的Java,右键依次点击创建->类;

 

说明:

源文件夹(D):java类源文件存放路径,建议采用默认;

包:java类文件所在包名,建议采用中介服务目录;

名称:java类文件名称,建议遵循java类命名规范;

超类:默认java.lang.Object,可根据实际情况是否采用;

接口:默认空值,可根据实际情况是否采用;

 

编辑java类代码逻辑:

 

说明:

输入参数:方法输入参数类型必须含有:ITipMessagePayload类型;

输出参数:如果方法需要返回,则返回类型也必须为:ITipMessagePayload类型;

消息重构:通过inMessage.getMessagePayload()方法获取请求报文后,需要将报文转为String类型,然后进行处理,处理结束后,必须采用TipMessageBulider对消息进行重构。

(二)   中介服务编排

打开创建的中介服务,点击中介流编辑器中的服务编排:

 

进入中介流编辑页面,根据实际业务逻辑从画板中拖拉相应控件,并进行流程编排;

 

说明:

如流程所示,消息进入中介流之后,先进行java方法处理,然后到达HTTP业务服务处理,业务服务处理结束,即中介服务流程结束。

a)  中介流属性

双击中介流空白处,弹出中介流属性设置控件:

 

说明:

 

变量定义:辅助中介流消息处理,变量仅存在于中介流中;

参数配置表:默认输入输出参数类型均为:ITipMessagePayload;

b)  Java方法属性

双击java方法,弹出java方法属性设置:

 

说明:

选择java方法:选择要实现的逻辑java方法;

参数配置表:数据类型均为:ITipMessagePayload,参数值根据上一节点参数值进行设置。如:上一节点输出参数为:inMessage,则此处输入参数为inMessage;

c)  业务服务属性

选择业务服务图元节点,双击该图元,弹出业务服务属性设置控件:

 

说明:

业务服务:选择要关联的业务服务;

参数配置表:数据类型均为:ITipMessagePayload,参数值根据上一节点输出参数决定;

 

注意:中介服务编排中,中介服务是一个服务,服务可自身实现服务属性,也可通过调用第三方服务实现,所以对于中介服务的编排,可根据实际情况灵活变动,不必完全符合本示例;

  关联中介服务

中介服务开发完成后,需要代理服务进行关联,通过代理服务关联中介服务,从而实践中介服务的业务功能。打开代理服务:

 

说明:

关联服务类型:选择中介服务;

服务名称:选择相应的中介服务名称;

  开发注意事项

在开发阶段,ESB项目的java构建路径中添加第三方Jar,可以使Java程序编译通过;

在运行阶段,Server是从[ESB 安装后目录]\server\libs目录中调用第三方Jar。所以要将项目用到的第三方Jar设置在那个目录中才可以确保Server正常执行Java方法。

当项目中用到的第三方Jar,在[ESB 安装后目录]\server\libs目录中已存在,那么以ESB产品自带的Jar为主,不要覆盖或重复引入。

导出部署包时,为了防止项目引用的Jar与ESB Server中包含的Jar冲突,在部署部署包时不会加载其中的Jar包,所以导出jar包和应用配置时,请勿工程引用的jar。

  中介开发案例

(一)   Xml转为JSON


 

public ITipMessagePayload
  xml2json(ITipMessagePayload inMessage){


 

         String
  body = (String) inMessage.getMessagePayload();


 

         System.out.println("xml
  to json前:"+body);


 

         String
  json = new XMLSerializer().read(body).toString();


 

         System.out.println("xml
  to json后:"+json);


 

         TipMessageBuilder
  builder = TipMessageBuilder.withPayload(json);


 

         builder.copySystemHeaders(inMessage.getSystemHeaders());


 

         builder.setMessageHeaders(inMessage.getMessageHeaders());


 

         builder.setProtocolHeaders(inMessage.getProtocolHeaders()); 


 

         return
  builder.build();


 

     }


 

(二)   JSON转为Xml


 

public ITipMessagePayload
  json2xml(ITipMessagePayload inMessage){


 

         String
  body = new String((byte[])
  inMessage.getMessagePayload());


 

         System.out.println("json
  to xml前:"+ body);


 

         JSONObject
  obj = JSONObject.fromObject(body);


 

         String
  xml = new XMLSerializer().write(obj);


 

         xml =
  xml.replace("e class=\"Object\">", "STRUCTURE").replaceAll("</e>", "</STRUCTURE>").replaceAll("class=", "type=").replaceAll("o>", "ROOT>").replaceAll("
  type=\"array\"", "");


 

         System.out.println("json
  to xml后:"+ xml);


 

         TipMessageBuilder
  builder = TipMessageBuilder.withPayload(xml);


 

         builder.copySystemHeaders(inMessage.getSystemHeaders());


 

         builder.setMessageHeaders(inMessage.getMessageHeaders());


 

         builder.setProtocolHeaders(inMessage.getProtocolHeaders()); 


 

         return
  builder.build();


 

     }


 

(三)   JSON报文修改


 

public ITipMessagePayload
  updateJsonMsg(ITipMessagePayload inMessage){


 

         String
  body = new String((byte[])
  inMessage.getMessagePayload());


 

         System.out.println("------------------------未转换前---------------------");


 

         System.out.println("原始报文:"+ body);


 

         JSONObject
  jobj = JSONObject.fromObject(body);


 

         jobj.put("password", "e717ebfd5271ea4a98bd38653c01113d");


 

         System.out.println("------------------------转换开始---------------------");


 

         System.out.println("转换后报文:"+jobj.toString());


 

         System.out.println("------------------------转换结束---------------------");


 

        


 

         //重新构建消息


 

         TipMessageBuilder
  builder = TipMessageBuilder.withPayload(jobj.toString());


 

         builder.copySystemHeaders(inMessage.getSystemHeaders());


 

         builder.setMessageHeaders(inMessage.getMessageHeaders());


 

         builder.setProtocolHeaders(inMessage.getProtocolHeaders()); 


 

         return
  builder.build();


 

     }


 
  • 无标签