示例

Version 24.3.9111


示例


本章节列举了一些需要结合 API 请求来完成的常见用例。

向 Workflow 中插入一个文件

POST 到 Files 资源,将文件添加到指定端口的 Send,Receive,Sent 文件夹中。要将一个文件插入到工作流中,需要将这个文件 POST 到处理该文件的第一个端口的 Send 文件夹下,例如:

POST http://mydomain.com:8001.com/api.rsc/files
{
    "ConnectorId":"myConnector",
    "Folder":"Send",
    "Filename":"test.txt",
    "Content":"VGhpcyBpcyBhIHRlc3Qu"
}

请注意,Content 参数包括了文件的 base64 编码内容。

如果目标端口启用了自动发送,则文件会被自动处理。否则,需要额外调用 sendFile 函数,指示端口处理该文件。例如:

POST http://mydomain.com:8001/api.rsc/sendFile
{
  "ConnectorId":"myConnector",
  "File":"test.txt"
}

检索特定事务的日志文件

getTransactionLogs 函数可以用来检索特定操作的日志文件。调用此函数需要知道相关事务的消息标识。可以通过查询 Transactions 资源来找到消息标识( Transactions 资源返回关于事务的元数据,但不返回事务日志文件本身)。

Transactions 资源的 GET 查询应该包括识别特定事务所需的过滤器(除非结果集可以被其它进程解析并找到所需事务的消息标识),例如:

GET http://mydomain.com:8001/api.rsc/tansactions(connectorId='myAS2Connector',Filename='myFile.edi')

response 的 JSON 主体将包括特定事务的消息标识。在 getTransactionLogs 中使用此消息标识,以及其它必需的参数 ConnectorIdDirection(发送或接收)。IncludeContent 参数应设置为 True,以便在 response 中包含日志文件的内容。例如:

POST http://mydomain.com:8001/api.rsc/getTransactionLogs
{
	"ConnectorId":"myConnector",
	"Direction":"Send",
	"MessageId":"message_id_from_earlier",
	"IncludeContent":"True"
}

response 的 Content 参数将保存 base64 编码的日志文件内容。

从 ArcScript 中调用系统 API

你可以从 ArcScript 使用 arc:call 命令来调用系统 API。每个调用必须以 api.rsc/ 开头。

这个功能有以下的限制:

  • 不支持 OData 协议的查询语法。
  • 调用频率限制器不生效。
  • 如果从管理界面上直接调用脚本,那脚本将使用当前登陆用户权限。
  • 如果脚本被自动触发,那审计表中的 IP 地址将总是 127.0.0.1。

获取端口

下面是一个仅使用 arc:call 命令来获取 端口 的例子 connectors resource

<arc:call op="api.rsc/connectors" httpmethod="get" authtoken="6o6B3m4r3F8z6m4R3d1k" out="o">

这个命令包含了一下组成部分:

  • op=”api.rsc/connectors” 用来指定 op (运算器) parameter 来调用系统 API(使用 api.rsc/)来获取 端口 信息。
  • httpmethod=”get” 指定当前命令是一个 GET 操作。
  • authtoken=”6o6B3m4r3F8z6m4R3d1k”authtoken 参数设置一个访问授权码。这个可以从 系统设置用户 页面上获取。
  • out=”o” 指定将返回的端口存在 o 中。

下面的 ArcScript 脚本用这个 arc:call 命令来创建一个所有存在端口的列表:

<!-- 初始化一个属性来保存逗号分隔的端口和其属性 -->
<arc:set attr="result.connectors" value=""/>

<!-- 列出所有存在的端口 -->
<arc:call op="api.rsc/connectors" httpmethod="get" authtoken="test0:8s9T7b7m5Y5k3i5P2s6x" out="o">
  <arc:set attr="result.connectors" value="[o.connectorid]([o.connectortype]),[result.connectors]"/>
</arc:call>

创建和修改端口

下面例子使用 POST 方法来调用系统 API 来创建一个新的 Script 端口到工作流中:

<arc:set attr="new.connectorid" value="Script1"/>
<arc:set attr="new.connectortype" value="Script"/>
<arc:call op="api.rsc/connectors" httpmethod="post" authtoken="test0:8s9T7b7m5Y5k3i5P2s6x" in="new">
</arc:call>

当新端口创建后,你可以使用系统 API 来获取新 Script 端口的 LogLevel 值:

<arc:set attr="read.connectorid" value="Script1"/>
<arc:call op="api.rsc/connectors" httpmethod="get" authtoken="test0:8s9T7b7m5Y5k3i5P2s6x" in="read" out="o">
  <arc:set attr="result.new:old_loglevel" value="[o.loglevel]" />
</arc:call>

你也可以用 PUT 方法来更新此 Script 端口的 LogLevel 值:

<arc:set attr="update.connectorid" value="Script1"/>
<arc:set attr="update.loglevel" value="Debug"/>

<arc:call op="api.rsc/connectors" httpmethod="put" authtoken="test0:8s9T7b7m5Y5k3i5P2s6x" in="update" out="o">
</arc:call>

将系统 API 与外部应用程序 (CORS) 结合使用

可以导航到设置页面系统 API选项卡,为系统 API 配置跨域资源共享(CORS)。CORS 允许基于浏览器的客户端连接到知行之桥。 如果没有 CORS,基于浏览器的脚本将无法连接到知行之桥,因为浏览器强制执行同源策略。 此策略限制客户端脚本和文档加载其来源之外的资源。 脚本的来源由协议、主机和端口组成。

  • 启用跨源资源共享 (CORS) 是否启用 CORS。 仅当选中此框时,其余选项才可用。
  • 允许所有不带 ‘*’ 的域 如果启用,域来源不限于特定列表。
  • Access-Control-Allow-Origin 要允许的以逗号分隔的域来源列表。 作为 HTTP 响应消息头包含在内。
  • Access-Control-Allow-Credentials 跨域请求中是否允许用户凭据(例如 cookie)。 作为 HTTP 响应消息头包含在内。
  • Access-Control-Allow-Methods 允许的以逗号分隔的方法列表。 作为 HTTP 响应消息头包含在内。
  • Access-Control-Allow-Headers 允许的消息头的逗号分隔列表。 作为 HTTP 响应消息头包含在内。
  • Access-Control-Max-Age 可以缓存 Access-Control 响应消息头值的最大持续时间(以秒为单位)。