自訂 Azure Logic Apps 中的連接器

適用於:Azure Logic Apps (使用量 + 標準)

在 Azure Logic Apps 中使用預先建置的連接器作業時,您可以快速建立自動化整合工作流程,無需撰寫任何程式碼。 連接器可協助工作流程跨其他應用程式、服務、系統、通訊協定和平台,進行連線及存取資料、事件和動作。 每個連接器都提供觸發程序、動作或兩者結合的作業,可讓您新增至工作流程。 藉由使用這些作業,您可以擴充雲端應用程式和內部部署應用程式的功能,以使用現有和新的資料。

Azure Logic Apps 中的連接器屬於「內建」或「受控」。 「內建」連接器會在 Azure Logic Apps 執行時間上以原生方式執行,這表示這些連接器裝載於與執行階段相同的處理程序中,並提供更高的輸送量、低延遲和本機連線能力。 「受控連接器」是 API 的 Proxy 或包裝函式,例如Office 365 或 Salesforce,可協助基礎服務與 Azure Logic Apps 通訊。 受控連接器是由 Azure 中的連接器基礎結構支援,並由 Microsoft 部署、裝載、執行及管理。 您有數百個受控連接器可供選擇,以搭配 Azure Logic Apps 中的工作流程使用。

當您第一次在工作流程中使用連接器作業時,某些連接器不需要先建立連線,但許多連接器都需要此步驟。 您建立的每個連線實際上是個別的 Azure 資源,可用以存取目標應用程式、服務、系統、通訊協定或平台。

不過,有時您可能會想要呼叫預先建置連接器未提供的 REST API。 若要支援更量身打造的案例,您可以建立自己的自訂連接器,以提供預先建置作業沒有的觸發程序和動作。

本文提供取用邏輯應用程式工作流程和標準邏輯應用程式工作流程的自訂連接器概觀。 每個邏輯應用程式類型都由不同的 Azure Logic Apps 執行階段提供,分別裝載在多租用戶 Azure 和單一租用戶 Azure 中。 如需 Azure Logic Apps 中連接器的詳細資訊,請檢閱下列文件:

取用邏輯應用程式

多租用戶 Azure Logic Apps 中,您可以從 Swagger 型或 SOAP 型 API 建立自訂連接器,最多可達用於取用邏輯應用程式工作流程的特定限制連接器文件提供如何為取用邏輯應用程式建立自訂連接器的詳細資訊,包括完整的基本和進階教學課程。 下列清單也會提供取用邏輯應用程式自訂連接器相關資訊的直接連結:

標準邏輯應用程式

單一租使用者 Azure Logic Apps 中,重新設計的 Azure Logic Apps 執行階段可支援標準邏輯應用程式工作流程。 此執行階段與支援取用邏輯應用程式工作流程的多租用戶 Azure Logic Apps 執行階段不同。 單一租用戶執行階段會使用 Azure Functions 擴充性模型,此模型提供一項關鍵功能,讓您建立自己的內建連接器,供任何人在標準工作流程中使用。 在大部分情況下,內建版本可提供更佳的效能、功能、定價等等。

當單一租用戶 Azure Logic Apps 正式發行時,新的內建連接器會包含 Azure Blob 儲存體、Azure 事件中樞、Azure 服務匯流排和 SQL Server。 此內建連接器清單會隨著時間持續成長。 不過,如果您需要標準邏輯應用程式工作流程中未提供的連接器,可以使用標準工作流程中的「服務提供者型」內建連接器所使用的相同擴充性模型,建立自己的內建連接器

服務提供者型內建連接器

在單一租用戶 Azure Logic Apps 中,具有特定屬性的內建連接器會稱為服務提供者 (非正式名稱)。 例如,這些連接器是以 Azure Functions 擴充性模型為基礎的,該模型提供的功能可讓您建立自己的自訂內建連接器,以便在標準邏輯應用程式工作流程中使用。

相反地,非服務提供者型的內建連接器具有下列屬性:

  • 不以 Azure Functions 擴充性模型為基礎。

  • 直接實作為 Azure Logic Apps 執行階段內的作業,例如排程、HTTP、要求和 XML 作業。

目前沒有任何功能可用來建立非服務提供者的內建連接器,或是直接在 Azure Logic Apps 執行階段中執行的新作業類型。 不過,您可以使用服務提供者基礎結構來建立自己的內建連接器。

下一節提供擴充性模型如何用於自訂內建連接器的詳細資訊。

內建連接器擴充性模型

根據 Azure Functions 擴充性模型,單一租用戶 Azure Logic Apps 中的內建連接器擴充性模型有一個服務提供者基礎結構,可用來建立、封裝、註冊及安裝您自己的內建連接器,當成任何人都可在其標準工作流程中使用的 Azure Functions 擴充功能。 此模型包含自訂內建觸發程序功能,可支援將 Azure Functions 觸發程序或動作公開為自訂內建連接器中的服務提供者觸發程序。

下圖顯示 Azure Logic Apps 設計工具與執行期間預期具有 Azure Functions 型觸發程序的自訂內建連接器實作方法:

Conceptual diagram showing Azure Functions-based service provider infrastructure.

下列各節提供連接器需要實作介面的詳細資訊。

IServiceOperationsProvider

此介面包含方法,這些方法會提供自訂內建連接器的作業資訊清單。

  • 作業資訊清單

    作業資訊清單包含自訂內建連接器中實作作業的相關中繼資料。 Azure Logic Apps 設計工具主要使用此中繼資料來驅動連接器作業的製作和監視體驗。 例如,設計工具會使用作業中繼資料來了解特定作業所需的輸入參數,並根據作業輸出的架構來協助產生輸出的屬性權杖。

    設計工具需要並使用 GetService()GetOperations() 方法來查詢連接器所提供的作業,並顯示在設計工具介面上。 GetService() 方法也會指定設計工具所需的連接輸入參數。

    如需這些方法及其實作的詳細資訊,請檢閱本文稍後的實作方法一節。

  • 作業叫用

    作業叫用是工作流程執行期間,Azure Logic Apps 執行階段用來呼叫工作流程定義中指定作業的方法實作。

    • 如果您的觸發程序是以 Azure Functions 為基礎的觸發程序類型,則執行時間會使用 GetBindingConnectionInformation() 方法,Azure Logic Apps 會將必要的連線參數資訊提供給 Azure Functions 觸發程序繫結。

    • 如果您的連接器具有動作,執行階段會使用 InvokeOperation() 方法來呼叫連接器中在工作流程執行期間執行的每個動作。 若非上述情況,您不需要實作這個方法。

如需這些方法及其實作的詳細資訊,請檢閱本文稍後的要實作的方法一節。

IServiceOperationsTriggerProvider

自訂內建觸發程序功能,可支援將 Azure Functions 觸發程序或動作新增或公開為自訂內建連接器中的服務提供者觸發程序。 若要使用以 Azure Functions 為基礎的觸發程序類型以及相同的 Azure Functions 繫結作為 Azure 受控連接器觸發程序,請實作下列方法來提供 Azure Functions 所需的連線資訊和觸發程序繫結。

  • 需要有 GetFunctionTriggerType() 方法,才能傳回與 Azure Functions 觸發程序繫結中 type 參數相同的字串。

  • GetFunctionTriggerDefinition() 具有預設實作,因此您不需要明確實作此方法。 不過,如果您想要更新觸發程序的預設行為,例如提供設計工具未公開的額外參數,您可以實作此方法並覆寫預設行為。

要實作的方法

下列各節提供連接器需要實作方法的詳細資訊。 如需完整的範例,請檢閱範例 CosmosDbServiceOperationProvider.cs在單一租用戶 Azure Logic Apps 中建立標準邏輯應用程式的自訂內建連接器

GetService()

設計工具需要這個方法來取得服務的高階中繼資料,包括服務描述、連線輸入參數、功能、品牌色彩、圖示 URL 等等。

public ServiceOperationApi GetService()
{
   return this.{custom-service-name-apis}.ServiceOperationServiceApi();
}

如需詳細資訊,請檢閱範例 CosmosDbServiceOperationProvider.cs

GetOperations()

設計工具需要這個方法來取得服務所實作的作業。 作業清單是以 Swagger 結構架構為基礎。 設計工具也會使用作業中繼資料來理解特定作業的輸入參數,並根據作業輸出的結構架構產生輸出作為屬性標記。

public IEnumerable<ServiceOperation> GetOperations(bool expandManifest)
{
   return expandManifest ? serviceOperationsList : GetApiOperations();
}

如需詳細資訊,請檢閱範例 CosmosDbServiceOperationProvider.cs

GetBindingConnectionInformation()

如果您想要使用以 Azure Functions 為基礎的觸發程序類型,此方法會將必要的連接參數資訊提供給 Azure Functions 觸發程序繫結。

public string GetBindingConnectionInformation(string operationId, InsensitiveDictionary<JToken> connectionParameters)
{
   return ServiceOperationsProviderUtilities
      .GetRequiredParameterValue(
         serviceId: ServiceId,
         operationId: operationID,
         parameterName: "connectionString",
         parameters: connectionParameters)?
      .ToValue<string>();
}

如需詳細資訊,請檢閱範例 CosmosDbServiceOperationProvider.cs

InvokeOperation()

如果您的自訂內建連接器只有觸發程序,則不需要實作此方法。 不過,如果您的連接器具有要實作的動作,您必須實作 InvokeOperation() 方法,在工作流程執行期間執行的連接器中每個動作都會呼叫此方法。 您可以視連接器的動作需要使用任何用戶端,例如 FTPClient、HTTPClient 等等。 此範例使用 HTTPClient。

public Task<ServiceOperationResponse> InvokeOperation(string operationId, InsensitiveDictionary<JToken> connectionParameters, ServiceOperationRequest serviceOperationRequest)
{
   using (var client = new HttpClient())
   {
      response = client.SendAsync(httpRequestMessage).ConfigureAwait(false).ToJObject();
   }
   return new ServiceOperationResponse(body: response);
}

如需詳細資訊,請檢閱範例 CosmosDbServiceOperationProvider.cs

GetFunctionTriggerType()

若要使用以 Azure Functions 為基礎的觸發程序作為連接器的觸發程序,您必須傳回與 Azure Functions 觸發程序繫結中 type 參數相同的字串。

下列範例會傳回現成內建 Azure Cosmos DB 觸發程序 ("type": "cosmosDBTrigger") 的字串:

public string GetFunctionTriggerType()
{
   return "CosmosDBTrigger";
}

如需詳細資訊,請檢閱範例 CosmosDbServiceOperationProvider.cs

GetFunctionTriggerDefinition()

此方法具有預設實作,因此您不需要明確實作此方法。 不過,如果您想要更新觸發程序的預設行為,例如提供設計工具未公開的額外參數,您可以實作此方法並覆寫預設行為。

下一步

當您準備好開始實作步驟時,請繼續閱讀下列文章: