事件订阅服务v4
事件订阅服务(ESS)使用SAP Concur平台中的事件驱动体系结构原则实现发布/订阅模式。它允许客户和合作伙伴通过web服务得到通知,当某些操作发生在连接的公司。当业务/系统事件发生时,ESS将该事件连同相关信息发送到配置的端点。
- 事件-业务/系统对象或实体的状态。总是有一个
EventType
表示工作流中的一种实体更改类型或特定状态。示例:创建报表、提交报表等。 - 主题-业务/系统对象或实体的事件流。例子:
concur.user
,concur.expense.report
,concur.travel.request
. - 订阅-话题消费者。每个订阅都有一个订阅的主题。
- Webhook-一个使用订阅模型并向端点交付事件的ESS应用程序。
为了开始接收事件,您必须首先订阅您的应用程序的相关主题。要订阅活动,您必须与相关的SAP Concur技术联系人合作;对于合作伙伴,请与您的技术实现联系。对于客户,您的网络服务顾问将代表您订阅相关主题。
使用范围
创建订阅需要两级作用域。
的名字 | 描述 | 端点 |
---|---|---|
events.topic.read |
使用ESS API | Get, post, put, delete |
%的话题范围% |
访问特定主题(事件) | Get, post, put, delete |
- 如果应用程序只有
events.topic.read
Scope将始终返回一个空的主题列表。
工艺流程
访问控制
ESS要求调用者具有适当的JWT和范围,更多细节请参见作用域文档。调用者必须具有以下类型的作用域:
- ESS API级别范围
events.topic.read
要求能够访问ESS API。 - 例如,资源级范围
expense.request.read
需要能够访问expense.request
主题,并能够创建该主题的订阅。
合作伙伴实施团队可以为调用方应用程序请求所有必需的范围。
ESS交付模型
重要的是要记住,ESS没有一个API,你可以调用事件,ESS交付事件到你的端点。
- 它使用出站调用,SAP Concur提供调用由客户端或合作伙伴提供的公共URL,这是由第三方开发人员或客户端托管的web服务器。
- 应用程序端点还可以使用相关的web服务来检索或发送SAP Concur数据。例如,在提交旅行请求时可能会生成事件。然后,应用程序端点可以利用来自事件的数据(比如请求ID),从已发布的请求api中检索相关的旅行请求记录。
终端需求
ESS保证至少一次事件交付。这是通过重试将事件有效负载发送到订阅者的端点来完成的,直到响应表明成功接收。对订户端点的请求的预期最大确认时间为30秒。服务将尝试发送到端点,然后保持并重试,直到订阅者端点以已传递或未接受响应。服务将至少重试3天,并在交付失败后跳到下一个事件。我们建议用户考虑以下事项:
- 端点响应时间需求取决于主题吞吐量。请查看有关吞吐量的主题文档。
- 强烈建议在订阅者端点后面实现一个队列,以便尽可能保持低响应时间。
- 订阅者必须维持合理的正常运行时间,以支持集成场景的需求。
- 必须使用非自签名证书从公共web访问您的HTTPS服务器端点。该证书应该由已知的证书颁发机构签署,并且应该可以通过DNS访问。
ESS身份验证
有几种方法可以确保我们的服务访问您的端点。
- 我们将始终使用相同的客户端x509证书。通用名称是
CN = webhook.api.concursolutions.com, O =同意技术\,Inc . L =贝尔维尤,华盛顿圣= C =
证书序列号为0 ae315a13ab9ef8cadb9a46255c87283
. - 我们将始终使用请求头中提供的数字签名
Concur-Signature
.如果您决定使用此身份验证方法,您将需要我们的公钥。
-----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxS1LsXrEWEEMPooLHa4r oscanmko3habak0ycsdmr6hqqnlqrwp65tpbftbkwmz22hzep3ekhs1qvszgi + iq/bnVeDhkcD+LqVQGP+7fyE0E0bO96FOzMmtbRet4wAiiE9+uw5GmZfg+fRG3yI y2N5u5p7VHJ1RwNugrIUQjhrLvZc+lhqR/aKTxQCQ5CGAgLZIcr3FIWCWrSBMK3dWy3KI+qe3ZX0STrCCNxl2UFnuuAa2RZZ2j4QtWHlNkyK+UEup+cGkvpc1XrT7anL HlbTP6jE7MqB5sJ9r2EEzrJzJZjD13UqlzvI61tTC8SKpuk5AEaSsUV7RKlKUCjB 8wIDAQAB -----结束公钥-----
ESS行为
从订阅者的角度来看,事件订阅服务具有以下特征:
- 请求来自
us.api.concursolutions.com
,emea.api.concursolutions.com
,或cn.api.concursolutions.com
. - 始终使用客户端x509证书建立连接。
- 请求总是有一个数字签名。
- 当订阅者使用HTTP响应代码:5xx、401、403或429进行响应时,将重新尝试请求。
- 当订阅者使用HTTP响应代码(s)响应时,将不会重新尝试请求:
- 2xx -表示成功接收事件。
- 4xx -表示提交的事件是意外的或格式不正确。
- 将重试请求,直到交付或事件保留期到期。
- 事件保留期限为事件发布后的72小时。
- 事件不会被归档,但所有事件传递尝试/响应都会被记录并保留30天。