SAP PI之MessageMapping

下图是ESR配置中各种对象的关联关系,注意OperationMapping和MessageMapping的方向性

MsgMapping是两个MassageType之间的关系,用于ServiceInterface的OperationMapping中发送和接收方在Request和Response结构之间的映射,如果ServiceInterface的inB/outB双方使用的MessageType是同样的,那么是可以不需要MsgMapping的。

MsgMapping提供了图形操作界面,最终会根据配置生成java代码并编译成jar文件,在运行时会执行该文件处理mapping。

一,创建MsgMapping

在命名空间或其下面的Folder上右键--新建,填上名字即可,通常我们Z_MM开头表示MsgMapping

二,选择源和目的MessageType

源和目的的方向也是有讲究的,同一个接口请求和返回的mapping其方向是相反的,只要以数据的流向去理解就好了

Source

Target

RequestMapping

调用方的RequestMsgType

被调方的RequestMsgType

ResponseMapping

被调方的ResponseMsgType

调用方的ResponseMsgType

在选择MsgType时,有两种操作方式:

其一就是下面红色按钮弹出选择框,选择MsgType对象,也可导入XML或XSD文件

其二就是将左侧DesignObjectTree中的适用对象(MsgType,RFC,ExternalDefinition)拖拽到下图黄框区域即可

三,字段Mapping

红框2按钮会删除所有关联;红框3按钮会显示连接红线,帮助直观了解字段关联。

字段的关联也有多种操作方式

1,直接将左树节点直接拖拽到对应右树节点

2,鼠标点选树节点,会黄色显示在图底部,按红框1按钮或者在底部拉线连接,连接后变绿色;删除单个连接也可在底部右键操作

3,红框1按钮会连接Selected节点,如果节点含子节点会将同名的子节点自动连接,如下图LS_INFO和arg0可自动关联所有下级字段

四,Mapping中function的应用

function分为很多功能:文本操作,布尔运算,常量,日期,数值计算

function的操作都在下图区域进行,我们从上面点选相关列,再从下方点选所需function。

上图表示了如下一个映射关系,小白框代表了参数个数和输入输出方向

if zywbj = A.
   dtsend目标 = dtsend源.substring(0,8).
else.
   dtsend目标 = dtsend源.substring(0,4).
endif.

除了系统预置的function,还可自己创建function(UDF客制化函数),点击上图标红的按钮。ExecutionType会影响形式参数,代码按java语法编辑,但此处无法编译检查,如有语法错误需到下一节test运行才能看到。在MsgMapping中自建的function只能在这MsgMapping中用,如果想建一个可以多处通用的自建function,参见图二蓝框

//示例代码,从XI头部取DynamicVariable;这里的命名空间和变量,特别是系统预设变量,可以到ReceiverRule的condition维护那里去找
@LibraryMethod(title=“getASMA”, description=“get adapter specific message attribute”, category=“UDFPool”, type=ExecutionType.SINGLE_VALUE
public String getASMA (@Argument(title=“命名空间”) String namespace,@Argument(title=“变量名”) String attribute, Container container)  throws StreamTransformationException{
    Map<String, Object> all = container.getInputHeader().getAll();
    DynamicConfiguration dynConf = (DynamicConfiguration)all.get(StreamTransformationConstants.DYNAMIC_CONFIGURATION);
    DynamicConfigurationKey key = DynamicConfigurationKey.create( namespace, attribute);
    String value = dynConf.get(key);
    return value;
}

五,Mapping的测试

红框按钮可以切换网格视图与源码视图,在左侧网格视图或源码视图都可编辑值,然后点击左下面执行按钮,右侧就会展现目的MsgType收到的数据。

在源码视图我们有一点要关注的就是xml的命名空间与前缀:命名空间与MessageType所在命名空间一致,而前缀左侧是ns0右侧是ns1

对于Occurence可以大于1的element,在下图左侧测试编辑界面默认也只显示一个,可以右键--“duplicate subtree”来复制多个

六,Java Mapping and XSLT

前面小节是都是介绍MsgMapping图形操作的,会生成jar文件在runtime执行;此外还有一种直接编写java代码或XSLT文件,然后导入到PI中(见图二绿框)

使用java mapping时不需要创建MsgMapping,在OperationMapping时选择导入Jar的那个class即可

java编程参考:How to create SOAP to RFC PI interface with Java Mapping | SAP Blogs

SAP PI/PO Java Mapping — Test and Debug on Eclipse | SAP Blogs

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/318043.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

《SRE Google 运维解密》笔记

指导思想 介绍 Google 生产环境介绍 borg 是 k8s 的前身。 拥抱风险 服务质量 现在的 SLO 没有更细粒度的划分到季度 如果划分到季度&#xff0c;需要用这个数据来限制什么或者进行什么活动&#xff1f; L1S 链路的 SLA 的签署工作已经做了很多 对于 SLA 的达成情况数据没有…

代码随想录算法训练营第七天|哈希表理论基础,454.四数相加II ,383. 赎金信 ,15. 三数之和 ,18. 四数之和

刷题建议 刷题建议与debug 代码随想录目前基本都有了视频讲解&#xff0c;一定要先看视频&#xff0c;事半功倍。写博客&#xff0c;将自己的感悟沉淀下来&#xff0c;不然会忘大家提问的时候&#xff0c;记得要把问题描述清楚&#xff0c;自己在哪一步遇到了问题&#xff0c…

AWS EC2的SSM配置(AWS云中的跳板机)

问题 开发人员需要访问AWS云中私有子网的数据库服务等&#xff0c;都需要通过EC2进行SSH隧道代理。这里假设本地已经有一款稳定优秀的SSH客户端工具&#xff0c;并且假设已经会熟练使用SSH的隧道代理。 1.创建EC2 搜索找到EC2服务&#xff0c;如下图&#xff1a; 点击“启动…

Docker 配置国内镜像源加速

1. 国内镜像源总览 名称路径中国官方镜像https://registry.docker-cn.com网易163镜像http://hub-mirror.c.163.com中科大镜像https://docker.mirrors.ustc.edu.cn阿里云镜像https://[xxx].mirror.aliyuncs.com 2. 阿里云镜像源 地址&#xff1a;https://cr.console.aliyun.c…

【开源】基于JAVA+Vue+SpringBoot的校园电商物流云平台

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 商品数据模块2.3 快递公司模块2.4 物流订单模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 商品表3.2.2 快递公司表3.2.3 物流订单表 四、系统展示五、核心代码5.1 查询商品5.2 查询快递公司5.3 查…

PLSQL启动报错:Initialization error,不能初始化

出现场景&#xff1a;我这里原来有个旧版的PLSQL&#xff0c;想用新版的又装了个新版&#xff0c;启动的时候报错 解决办法 1.核对程序位数 第一个提示明显看到是和程序位数相关的&#xff0c;不管是32位还是64位要做到向匹配 2.设置oci.dll 第二个提示可以看到是和oci.dll…

jenkins环境搭建

jenkins环境搭建 1.环境说明2.环境准备1.jdk安装2.安装Git3.安装sshpass4.安装Maven 3.安装Jenkins(war包方式安装)1.安装2.镜像加速 4.官网提供的yum方式安装5.访问 1.环境说明 keyvalue环境centos7jdk版本11git2.43.0maven3.9.6jenkins最新版本http://mirrors.jenkins-ci.or…

(收藏)数据治理:一文讲透数据安全

数据治理&#xff1a;一文讲透数据安全 数据安全是数据治理的核心内容之一&#xff0c;随着数据治理的深入&#xff0c;我不断的碰到数据安全中的金发姑娘问题&#xff08;指安全和效率的平衡&#xff09;。 DAMA说&#xff0c;降低风险和促进业务增长是数据安全活动的主要…

【从零开始学习Java重要集合】深入解读ThreadLocal类

目录 前言&#xff1a; ThreadLocal&#xff1a; ThreadLocal的内部结构&#xff1a; ThreadLocal的常用方法&#xff1a; 1.set方法&#xff1a; 2.get方法&#xff1a; 3.setInitialValue方法 remove方法&#xff08;&#xff09;&#xff1a; ThreadLocalMap&…

第十二章 Java内存模型与线程(一)

文章目录 12.3 Java内存模型12.3.1 主内存与工作内存12.3.2 内存间交互操作小结12.3.3 对于volatile型变量的特殊规则12.3.5 原子性、可见性与有序性12.3.6 先行发生原则 12.3 Java内存模型 12.3.1 主内存与工作内存 1.Java 内存模型规定了所有的变量都存储在主内存&#xff…

Java反转单链表

/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(int val, ListNode next) { this.val val; this.next next; }* }*/ //核心思想&#xff0c;利用cur和Curnex…

驱动树莓派直流电机(二)——python

一、安装spyder 我喜欢用spyder编写python 有两种方法安装spyder&#xff0c;第一种&#xff08;版本更新&#xff09;&#xff0c;但是我更细化第二种&#xff0c;简单 方法一&#xff1a;在ubuntu PC端输入如下代码 wait~~~~~~~~~~~ 安装的慢就用下面这个代码 或者设置切…

脱离于ASP.NET 和Visual Studio编辑Razor脚本

Razor Pad是一个编辑Razor脚本的工具&#xff0c;脱离于ASP.NET 和Visual Studio。 github地址&#xff1a;https://github.com/RazorPad/RazorPad 如果在编译源码时出现&#xff1a;签名时出错: 未能对 bin\Debug\app.publish\RazorPad.exe 签名。SignTool Error: No certifi…

JFinal学生信息管理系统

JFinal学生信息管理系统 项目地址&#xff1a;mendianyu/StudentManage: JFinal学生信息管理系统 (github.com) 环境介绍&#xff1a; IDE&#xff1a;IDEA 2021.2.3 jdk:1.8 maven:3.6.3 项目介绍&#xff1a;JFinal框架实现的学生信息管理系统&#xff0c;完成简单的学生信…

一文解析低代码平台

一、低代码概念 低代码开发平台是一种无需编码或者只需要少量代码即可快速生成应用程序的开发平台&#xff0c;通过可视化进行应用程序开发的方法&#xff0c;让不同经验水平的开发人员可以通过图形化的用户界面&#xff0c;使用拖拽组件和模型驱动的逻辑来创建网页和移动应用程…

【QT】多层QTreeWidget与QStackedWidget的关联操作

通过点击多层QTreeWidget来控制QStackedWidget中的page页面切换 treeWidget设计 treeWidget设计&#xff1a; // treeWidget设计ui->treeWidget->clear();ui->treeWidget->setColumnCount(1);//第一层QStringList l;l<<"管理系统";QTreeWid…

JavaScript基础(26)_dom增删改练习

<!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8"><title>DOM增删改练习</title><link rel"stylesheet" href"../browser_default_style/reset.css"><style>table {borde…

分布式事务:构建无障碍的云原生应用的完美解决方案

目录 一、前言 二、分布式事务概述 2.1 什么是分布式事务 2.2 分布式事务的挑战 2.3 分布式事务的分类 三、传统解决方案分析 3.1 两阶段提交协议&#xff08;2PC&#xff09; 3.2 三阶段提交协议&#xff08;3PC&#xff09; 3.3 补偿事务 3.4 其他传统解决方案 四…

Qt/QML编程学习之心得:slider(34)

滑条slider&#xff0c;有时也成为进度条progressbar&#xff0c;在GUI界面中也是经常用到的。 import QtQuick 2.9 import QtQuick.Controls 2.0 import QtQuick.Layouts 1.2ApplicationWindow {id:rootvisible: truewidth: 1920height: 720//title: qsTr("Hello World&q…

慕尼黑工业大学最新提出!单目实时密集建图的混合隐式场方法

作者&#xff1a;小柠檬 | 来源&#xff1a;3DCV 在公众号「3DCV」后台&#xff0c;回复「原论文」可获取论文pdf 我们提出了一种新颖的方法&#xff0c;它将基于深度学习的密集SLAM与神经隐式场相结合&#xff0c;实时生成密集地图&#xff0c;而无需像以前的方法那样依赖RGB-…