主页 > CDN > > 正文

消息队列_常用的消息中间件_年度促销

浏览:

嗨,朋友们,

我得到一个业务需求,SAP ECC使用出站ABAP代理向PI发送数据,PI接收数据并在FTP/SFTP服务器上创建文件(代理到文件场景)。文件名在来自发送方SAP系统的有效负载中提供。为了在动态配置(ASMA)中设置文件名,我使用了XSLT映射(而且也很少有转换)。变量替换对我来说不起作用,因为文件名在Receiver file/SFTP adapter之前是不可用的(在转换过程中被忽略了,这是我们的业务需求)

我使用上述流程开发了许多接口,我在所有映射中都编写了相同的XSLT代码(在动态配置中设置文件名),所以我决定编写适配器模块,它执行与XSLT代码相同的任务。适配器模块一旦部署,就可以在任何通信通道中使用,任何团队成员只要提供必要的配置参数就可以重用它。

这个适配器模块是使用enterprisejavabeans(EJB)3.0开发的。它希望在适配器配置中提供文件名XPath。此XPath用于使用正则表达式(regex)获取文件。同样的实现也可以使用DOM parser来完成,物联网流量卡,但是DOM parser对于大文件的执行速度较慢,所以我使用regex,这是一个更好的选择,因为它是java本地的。

这个适配器模块可以在"CallSapAdapter"模块之前的发送方或接收方通信通道中使用。我在SOAP(XI3.0)ABAP代理通信通道中使用它。

下面是适配器模块的java代码:由于我使用的是EJB3.0,所以不需要实现会话bean。只需要模块接口即可实现。

方法getRegexFromXPath()返回Bean类中使用的正则表达式,匹配模式并找出文件名。

包网址:com.sap.pi.适配器模块;

进口输入流;

导入java.io.PrintWriter;

导入java.io.StringWriter;

进口javax.annotation.PostConstruct;

导入javax.annotation.PreDestroy;

导入javax.ejb.Local文件;

导入javax.ejb.LocalHome;

导入javax.ejb.Remote文件;

导入javax.ejb.RemoteHome;

导入javax.ejb.Stateless无状态;

进口com.sap.aii公司.af.lib.mp文件.模块。模块;

导入com.sap.aii公司.af.lib.mp文件.模块.ModuleContext;

进口com.sap.aii公司.af.lib.mp文件.模块.ModuleData;

导入com.sap.aii公司.af.lib.mp文件.module.ModuleException模块异常;

导入com.sap.aii公司.af.lib.mp文件.module.ModuleHome模块;

导入com.sap.aii公司.af.lib.mp文件.模块.ModuleLocal;

导入com.sap.aii公司.af.lib.mp文件.module.ModuleLocalHome模块;

导入com.sap.aii公司.af.lib.mp文件.模块。模块远程;

进口com.sap.engine.接口.messaging.api.消息

导入com.sap.engine.接口.messaging.api.MessageKey;

导入com.sap.engine.接口.messaging.api.MessagePropertyKey;

导入com.sap.engine.接口.messaging.api.PublicAPIAccessFactory;

进口com.sap.engine.接口.messaging.api.xml有效载荷;

进口com.sap.engine.接口.messaging.api.auditlog.AuditAccess;

导入com.sap.engine.接口.messaging.api.auditlog.AuditLogStatus文件;

导入com.sap.engine.接口.messaging.api.exception.MessagingException异常;

/***

*会话Bean实现类FileSetProperties

*/

@无状态(name="FileSetPropertiesBean")

@本地(value={模块本地类})

@远程(值={模块远程类})

@LocalHome(值=ModuleLocalHome.class类)

@RemoteHome(值=ModuleHome.class类)

公共类FileSetProperties实现模块{

私有AuditAccess audit;

public FileSetProperties(){

}

@Override

public ModuleData进程(ModuleContext ModuleContext,ModuleData inputModuleData)抛出ModuleException{

FunctionsLibrary functionLibrary=new FunctionsLibrary();

Object obj=null;

Message msg=null;

MessageKey msgKey=null;

String fileName=";

StringfileXPath="fileXPath";

try{

obj=inputModuleData.getPrincipalData输入模块数据();

消息=(消息)对象;

消息键=新消息键(消息.getMessageId(), 消息.获取消息方向());

添加日志(msgKey,AuditLogStatus.SUCCESS成功,"****进入FileSetProperties适配器模块*******";

MessagePropertyKey fileKey=new MessagePropertyKey("文件名", "HTTP//SAP/COM/XI/XI/St/文件");

XMLPayload XMLPayload=消息.getDocument();

输入流输入流=xmlPayload.getInputStream文件();

字符串指令=functionLibrary.inputStreamToString(inputStream);

字符串正则表达式=functionLibrary.getRegexFromXPath(moduleContext.getContextData(fileXPath));

addLog(msgKey,AuditLogStatus.SUCCESS成功,"正则表达式:"+regex+"输入消息解析完成。");

//addLog(msgKey,AuditLogStatus.SUCCESS成功,"输入消息解析完成。");

如果(安装火柴(regex)){

文件名=安装.replaceAll(正则表达式,"$"+functionLibrary.getRegexReplacementCount函数库());

发表评论
验证码: 点击我更换图片

注:网友评论仅供其表达个人看法,并不代表本站立场。

热门文章

  • 谷歌云_mysql中间件_免费领
    谷歌云_mysql中间件_免费领

    谷歌云_mysql中间件_免费领

    现在工作场所正在发生重大变化。我们协作、计划项目和管理工作量的方式正在改变,如果企业没有做好准备,它们将很快被抛在后面。准确地理解是什么...

  • 域名交易_阿里云翼_企业级
    域名交易_阿里云翼_企业级

    域名交易_阿里云翼_企业级

    通常认为搅动器是一个漏水的桶。你有多少顾客?你损失了多少?你留了多少钱,漏了多少钱?让我们把顾客流失看作是导致医生就诊的原因,比如偏头痛...

  • 金山云_华为云台_怎么申请
    <strong>金山云_华为云台_怎么申请</strong>

    金山云_华为云台_怎么申请

    在我们发布通知(以前是Engage)后的四个月里,我们在后端做了大量的改进。大多数更新在UI中不可见。相反,我们的客户可能已经注意到他们发送的电子...

  • 云主机_深圳企业网站设计_评分榜
    <strong>云主机_深圳企业网站设计_评分榜</strong>

    云主机_深圳企业网站设计_评分榜

    更新:有本文的更新版本。阅读"RPA如何转换数据迁移"(2019年出版)。 在本文中,数据迁移被定义为将数据从旧的遗留系统移动到新的替换系统。通常,...

  • 域名备案_已备案未注册的域名_最新活动
    <strong>域名备案_已备案未注册的域名_最新活动</strong>

    域名备案_已备案未注册的域名_最新活动

    今天是Skype推出十年来的日子,Skype是一款免费的互联网通话应用,用户已超过3亿。Skype是一家来自爱沙尼亚的初创公司,来自点对点文件共享应用Kazaa的开...

云储存

更多 >
  • <strong>京东云_最新电影百度云_返利</strong>
    京东云_最新电影百度云_返利

    在之前的第1部分博客中,我描述了不同的过滤属性,这些属性目前可用于 (需要SAP Service Marketplace登录) 中新启动的云KPI目录https://go.support.sap.com/kpicata...

  • 香港带宽_百度云免费会员_评分榜
    香港带宽_百度云免费会员_评分榜

    亲爱的合作伙伴, 我们想邀请您参加即将推出的SAP enablement产品"S/4HANA DB Migration to HANA",请使用右侧的注册按钮立即预订您的座位! 在这里注册6月22日上午...

云储存对象存储_数据库连接类_价格
云储存服务器_好用的服务器_优惠券
云储存对象存储_西部数码虚拟主机_学生机
云储存香港带宽_六盘水网站建设_测评
云储存服务器_H漫画百度云_稳定性好