从 PI Message Mapping 实时捕获错误信息

本文介绍了在处理EDI消息时遇到的问题,即如何在映射失败时了解错误详情。作者探讨了使用警报API和应用读取状态表的解决方案,但这些方法不适用于实时警报。因此,提出了在消息映射中创建自定义错误处理例程的方法,通过覆盖映射的执行并在异常时进行处理。提供的代码示例展示了如何在transform方法中实现这一功能,以便在出现异常时抛出自定义异常并进行错误处理。
摘要由CSDN通过智能技术生成

在一个项目中,我们有一个定制的消息跟踪软件来跟踪我们的EDI消息。我们面临的一个问题是,我们想知道消息出了什么问题,以及为什么它在映射中失败。

正如我所看到的,我们有三种选择。

使用新的警报 API 获取警报
创建一个应用程序,该应用程序读取 SAP PI 的状态表,并基于该应用程序创建警报。
在消息映射中创建我们自己的错误处理例程。
对于前两个解决方案,可以在警报和消息之间建立连接。它可以使用标准的java表和调度来构建。

挑战在于是否必须始终批量运行或计划运行,因此无法实时执行验证。在大多数情况下,这是正确的。

对于某些合作伙伴,我们希望执行实时警报,因此前两种方法并不理想。

这里的想法是创建一个新的执行方法来覆盖固有的映射。然后,我可以先进行调用,然后通过调用 inhered execute 函数来执行映射。

因此,API发生了变化,它看起来与我必须找到一种方法在PI 7.31上做同样的事情。在反编译(我做了很多试错实验)AMapping类之后,我能够找到它的工作方式。它看起来与Java映射API非常相似。它使它变得容易得多。

所以我只需要转到“函数”选项卡,然后在 Attributes and Methods 中添加函数。

从 PI Message Mapping 实时捕获错误信息

然后我可以尝试一下 - 抓住对超级方法的调用,然后我可以在下面放置自己的错误处理。作为奖励,我能够使用转换输入来获取消息的动态属性。

代码如下所示。

	public void transform(TransformationInput in, TransformationOutput out) throws StreamTransformationException {
		// TODO Auto-generated method stub
		try {
			super.transform(in, out);
		} catch (Exception e) {
			// Custom Error handling.
			throw new StreamTransformationException("Custom Exception handler:" + e.getMessage(), e);
		}
	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SAP爱好者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值