从 Microsoft Dynamics Nav 调用外部 API

Calling an external API from Microsoft Dynamics Nav

我正在研究如何将 Microsoft Dynamics NAV 与我现有的 REST API(基于 Django REST Framework 构建)集成。我想做的是触发 API 通过 REST API.

从 NAV 调用 CRUD 对象

阅读 NAV 的 Web 服务文档,似乎很清楚 NAV 可以公开 Web 服务供其他软件使用。但是 NAV 可以消耗第 3 方 APIs 吗?在 web services examples documentation 中,它表示:

Solutions that need to execute business logic or read data from Microsoft Dynamics NAV are candidates for Web service implementation. These can also be solutions that write data to Microsoft Dynamics NAV and validate the data using existing business logic.

此外,它还给出了以下如何使用 Web 服务的示例:

Execute any kind of business logic that is more easily developed and managed in Microsoft Dynamics NAV.

但是,我没有看到任何数据写入的例子。在 web service pages or codeunits 的曝光中,似乎没有办法调用第 3 方 API 并使用 NAV 中返回的数据执行业务逻辑。这真的可能吗?

很遗憾,没有。

但是,您确实可以从 Dynamics NAV 'Development Client' 中访问完整的 .NET 框架 - 在定义变量时 select Type DotNet

它远非完美,因此对于更大的任务,我将创建插件或完全外部库(取决于版本)。

对于像这样较小的东西,我个人认为最简单的方法是将其作为小型(控制台)应用程序用 C# 编写,然后 'translate' 将其返回 Dynamics NAV。

如果您正在寻找调用 Web 服务的方法,那么为什么需要 Nav Web 服务? Nav 网络服务是调用 Nav 的一种方式。

These can also be solutions that write data to Microsoft Dynamics NAV and validate the data using existing business logic.

这意味着如果您调用已发布的 Nav Web 服务,那么您可以将数据传递给您的调用,数据将被验证并保存到 Nav。所以这是关于如何将数据推送到 Nav,而不是从外部系统拉取。

如果您想从 Nav 调用 Web 服务,请考虑以下选项:

  1. 编写外部包装器库(如@SeeSharp 所述或described)。然后在C/AL中作为DotNetAutomation类型的变量使用。
  2. 'Microsoft XML, v6.0'.XMLHTTP60 right in C/AL to make http calls 等现有库用于您的 Web 服务。
  3. 去做Navision style.
  4. 最后该死的选择是编写控制台应用程序,它将使用您的 Web 服务并使用 shell 从 Nav 调用它。 这不是一个选项,我知道