云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

文件存储_代办域名备案_代金券

小七 141 0

由于上一次深入了解内部SAP CPI函数是受欢迎的,免费大数据,今天我们将再次深入了解SAP CPI的框架。

那些不仅使用过WebIDE,还使用过SAP CPI eclipse插件的人可能都知道"任务视图"。Eclipse中的这个小视图向您展示了在sapcpi上运行或完成部署的时间,以及在节点之间同步内容的时间。今天我们要学习的是,如何将我们自己的代码/接口附加到这些事件上。

附加到这些事件上可以让我们有一堆新的场景。你不能想象吗?怎么样:

"每当部署IFlow时,向维护团队发送一封电子邮件。""在部署时备份当前iFlow。"…

我认为这些都是非常酷的场景,当然还有更多的用例。在开始之前,让我们先来看看这篇博文的内容……

目录

OSGi事件简介实际用例构建第一个OSGi事件处理程序(集成流)展望、想法和活动清单反馈和讨论

OSGi事件简介

要了解我们想做什么,有必要对SAP CPI的工作原理有一个粗略的了解。让我试着用简单的话给你作一个简短的介绍。当您部署IntegrationFlows时,它们被"翻译"成Java程序代码,而Java程序代码在很大程度上是基于apachecamel框架的。(有助于构建集成应用程序的框架)由于CPI是模块化的,这些IFlow java程序不仅仅是简单地执行,返现网,而是作为OSGi包运行。

OSGi本身就是一个允许软件模块化的框架(简单地说)。每个IFlow都将作为所谓的OSGi包进行处理。OSGi框架允许启动、停止、部署和运行这些包。不仅IFlows,SAP CPI的其他核心组件也作为OSGi包构建/处理。现在我们来讨论一个关键点:sapcpi工具包如何与IFlow包通信?WebIDE/monitor捆绑包如何知道IFlow(捆绑包)已成功部署?

由于OSGi的模块化特性,它附带了一个事件服务,允许捆绑包发送和接收消息。让我们看看下面的图。(请原谅布局-我是技术人员,不是设计师…

捆绑包可以充当所谓的事件发布者。事件发布者可以向EventAdmin服务发送事件,每个事件有两个主要特征:

然后事件将由EventAdmin服务"共享"。另一方面,您将找到事件处理程序(基于OSGi的EventHandler类)。可以在OSGi的上下文中注册事件处理程序,并侦听在事件处理程序属性中定义的主题消息。每经过一个具有匹配主题的事件,就会触发事件处理程序的"handleEvent"方法。在handleEvent方法中,事件处理程序获取事件,包括事件的属性,并可用于进一步的操作/处理。

请注意有关事件处理程序的以下事项:

多个事件处理程序可以侦听同一主题(所有事件处理程序都将获取事件)单个事件处理程序可以侦听多个主题(1..n)事件处理程序可以对主题定义使用通配符。E、 g./com/source/*将事件与主题/com/source/event\u a以及/com/source/event\u b匹配

一个实际用例

让我们来看看下面的故事。Mike离周末只有一次部署,但是部署失败了…

(点击图片放大)

Mike应该使用的端点已经在使用了。但是是谁干的?哪个IFlow使用Mike想要在IFlow中使用的端点,即使他找到了IFlow,是否允许他取消部署它?

让我们想象一下,每当有人部署一个工件时,就会有一封自动的电子邮件。迈克能准时去度周末吗?

(点击图片放大)

看起来部署信息邮件可能是件好事。所以让我们建造它!我们的目标是自动发送一封电子邮件,其中包含每个部署上部署的人员/时间/内容的信息。

构建您的第一个OSGi EventHandler(集成流)

我们希望在本文中构建的集成流,应满足以下三个目的:

以下指南将按照上述顺序处理这三个功能要求。首先创建一个新的IFlow,其元素如下面的屏幕截图所示。(下面详细描述的是屏幕截图中的数字。)

(1)从计时器元素开始。设置为每天运行X次。如果我们的自定义处理程序仍然注册,IFlow将每天检查几次。(我们使用这种方法,人工智能核心,因为我们的自定义事件处理程序可能会由于重新启动或类似情况而取消注册。通过从计时器开始,我们可以确保在这种情况下,大数据的前景,我们的自定义事件处理程序将被重新注册。

(2)放置内容修饰符作为下一步。如下面的屏幕截图所示配置以下属性。

属性eventListenType应设置为我们要侦听的OSGi事件的名称。对于CPI工件部署,事件名为"com/sap/it/nm/events/content/DEPLOYED"。endpointBase属性应该包含CPI实例的基本url(包括http适配器基本路径)。例如:https://-iflmap.hcisbp.。hana.ondemand.com/httpendpointSlug属性应该包含端点路径,我们稍后将为事件处理程序端点配置。在此处输入与稍后在HTTP发送方通道中使用的值相同的值(或使用externalize参数特性重新使用模式)。E、 g.:/pr009/部署处理程序属性deleteEventhandler应为空(!)。我们将用它作为开关。如果已填充,IFlow将以"取消注册事件处理程序"模式运行属性credentialName应填充包含访问SAP CPI的用户凭据的SAP CPI安全材料的名称/id。(=S-用户和密码)属性eventHandlerId应填写您喜欢的自定义id。这将作为"标记"使用,以便稍后在取消注册模式中识别事件处理程序。(如果要创建多个eventhandler iFlow,请注意每个都有不同的eventHandlerId!)

(3)如果处于"事件处理程序注册"模式,则应使用此路由。如(2)中所述,我们通过属性deleteEventhandler决定IFlow处于哪种模式。