Anypoint Connector DevKit について

Anypoint Connector DevKit (DevKit) ​Anypoint Connector​ の開発を可能にします。Anypoint Connector は、サードパーティシステムの API と Mule アプリケーション間の通信を促進する、MuleSoft Anypoint Platform の拡張モジュールです。

Anypoint Connector DevKit 3.9 は最新バージョンの DevKit であり、Studio 6 での Mule アプリケーション設計のいくつかの側面でコネクタのエンドユーザサポートを提供します。DevKit を使用したコネクタコードの記述に関する要件と推奨事項は、バージョン 3.9 以降変わっていません。

DevKit のバージョン設定は Mule のバージョン設定に従っていません。DevKit 3.9 で作成されたコネクタは、Mule 3.5.3 ~ 3.9 で動作します。

DevKit は、Studio 6 および Mule 3 とのみ互換性があります。Mule 4 Connector を作成するには、 「Mule SDK」ドキュメント​を参照してください。

DevKit を使用したコネクタの開発

Anypoint Studio のインスタンスを使用してシステムで ​DevKit ベースの Anypoint Connector​ を開発するために必要な手順を次に示します。

  1. コネクタを作成してテストするには、​ここ​で Java JDK バージョン 8​、 Apache Maven​、 Anypoint Studio​、および ​Anypoint DevKit Plugin​ の詳細なインストール手順を参照してください。コネクタは Windows、Mac、または Linux を使用して開発できます。

  2. 新しいコネクタ:

    既存のコネクタ:

    • [File (ファイル)]​ > ​[Import (インポート)]​ > ​[Anypoint Studio]​ > ​[Anypoint Connector Project from External Location (外部の場所からの Anypoint Connector プロジェクト)]​ をクリックし、URL または .zip ファイルを選択して、ウィザードを完了し、プロジェクトの検索とインポートを行います。

      「SOAP Connector の作成」​も参照してください。

  3. リソースアクセスを決定します​ - リソースごとにアクセス方法は異なります (REST、SOAP、FTP、Java SDK 機能など)。

  4. 認証メカニズムを選択します​ - Mule は OAuth V1 または V2 と、ユーザ名とパスワードの認証 (​接続管理​とも呼ばれる) をサポートします。これらは、API キー、SAML、NTLM、Kerberos、または LDAP などのプロトコルで使用できます。

  5. コネクタのデータモデルを選択します​ - モデルには静的 Java オブジェクトまたは動的オブジェクトを使用できます。​DataSense​ を使用できます - 対象リソースが何の情報を期待しているかを判別します。

  6. コネクタの @ 属性アノテーションを追加します​ - コネクタの重要な部分を指定するために Mule が使用する @ 属性を含むコネクタのコードを作成します。

  7. テストをコーディングします​ - テストには、単体テスト、機能テスト、および Studio の相互運用性テストがあります。

  8. コネクタをドキュメント化します​ - MuleSoft には、空白に入力することでドキュメントを容易に作成できるテンプレートが用意されています。このドキュメントは、スタッフと他のユーザがコネクタの機能と使用方法を理解するのに役立ちます。

  9. コネクタをパッケージ化します​。

DevKit 機能

DevKit は以下の機能を提供します。

  • Anypoint Studio と、開発を簡素化および高速化する Eclipse ベースのインターフェースを使用するビジュアルデザインおよび実装。

  • Maven サポート。

  • コネクタパッケージ化ツール。

  • OAuth、ユーザとパスワードの認証を含む、複数の認証種別のサポート。

  • リモートメタデータを取得するための DataSense サポート。

  • 広範なテスト機能。

  • 開発の開始を簡素化するためのサンプル、トレーニング、サポート。

  • バッチ、クエリページネーション、および DataSense クエリ言語のサポート。

DevKit は、その機能をサポートするために使用できる広範なアノテーションセットを備えたアノテーションベースのツールです。DevKit アノテーションの完全なリストについては、 「Annotation リファレンス」​を参照してください。

コネクタとは?

Anypoint Connector は、Mule アプリケーションと外部リソース (データベース、API など) 間のやり取りを REST、SOAP、または Java SDK を介して容易にする拡張モジュールです。

インテグレーション開発者に API の複雑さを見せない再利用可能なコンポーネントとして、カスタムコネクタは、SaaS やオンプレミスの Web サービス、アプリケーション、およびデータソースとのインテグレーションを容易にします。Mule Runtime 環境を実行する Anypoint Studio で Anypoint DevKit を使用して作成されたコネクタは、Anypoint Platform の拡張機能として動作します。

コネクタのアーキテクチャ

コネクタは、Mule フローから作成された Mule アプリケーション内、および対象のリソースである外部リソース内で動作します。

DevKitOverviewArchitecture

Mule Connector には 2 つの操作サイドがあります。Mule 方向のサイドがリソースの対象方向のクライアントサイドと通信することで、コンテンツは Mule アプリケーションと外部対象方向のリソースとの間を移動できます。

Mule 方向の機能

Mule 方向のサイドでは、コネクタは以下で構成されます。

  • メイン Java クラス​。​@Connector​ 属性のアノテーションを付加した Java コード。Anypoint Connector DevKit のアノテーションについての詳細は、 「Anypoint DevKit API リファレンス」​を参照してください。アノテーションの機能についての詳細は、 Java アノテーション​を参照してください。

  • コネクタ属性​。​@Configurable​ 属性のアノテーションが付加される ​@Connector​ クラスのプロパティ。

  • メソッド​。​@Processor​ 属性のアノテーションが付加される機能。

他のアノテーションでは、接続管理など、認証関連の機能を定義します。アノテーションを使用すると、コネクタの Anypoint Studio ダイアログのレイアウトを制御することもできます。データモデルと、発生または伝播する例外も Mule 方向のクラスです。

Studio で Anypoint Connector プロジェクトを作成すると、DevKit はスキャフォールディングコネクタを生成します。このスキャフォールディングコネクタには、コネクタを作成するための ​@Connector​ クラス、​@Configurable​ 属性、​@Processor​ メソッド、および認証ロジックが含まれます。

対象方向の機能

コネクタの対象方向サイドまたはクライアント方向サイドは、リソースへのアクセスを可能にするクライアントテクノロジによって異なります。この機能は、クラスライブラリと、クライアント機能にアクセスするために ​@Connector​ クラスで使用される 1 つ以上のクラスで構成されます。この機能はクライアントクラスと呼ばれます。

一般に、クライアントクラスは他のクラスを使用して、対象のリソースへのコールを実際に実装します。対象によっては、この一部のクラスが自動的に生成または提供される場合があります。たとえば、Java クライアントライブラリがあるか、SOAP または REST サービスを使用している場合、ほとんどのクライアントコードがその場所に実装されます。これ以外の場合は、コードを自分で記述する必要があります。

コネクタのコーディング

DevKit を使用するとコネクタを最初から作成できます。独自のコネクタを作成する前に、 Anypoint Exchange を参照して、使用可能なコネクタがないかどうかを確認してください。コネクタページには、オープンソースのコミュニティコネクタもリストされており、これを使用して、成長する公開コネクタ開発コミュニティに寄与できます。

コネクタデータモデル

コネクタのデータモデルは、公開された操作に渡すまたは公開された操作から渡されるオブジェクトで構成されます。多くの Web サービスが XML または JSON データを受け入れて返しますが、適切な Mule Connector では、クライアントが使用するデータ形式を Java オブジェクト (対象に送信するまたは対象から返されるデータオブジェクトを表す POJO またはキー-値のマップ) に変換する必要があります。(未加工の XML または JSON 応答を Mule に返すことは、不適切に実装された未熟なコネクタを表す 1 つの印です)。

REST と SOAP の比較

REST は、リソースの情報を作成、取得、追加、削除するためのアクセス権を提供する POST、GET、PUT、DELETE コールを使用して、HTTP へのアクセスを簡素化します。

SOAP はリソースと通信するための従来の方法であり、WSDL ファイルを必要とします。WSDL ファイルは、Java クラスの構造、メソッド、プロパティ、およびドキュメントのあらゆる側面を指定する XML ファイルです。SOAP は、ガバナンス情報、作成情報、およびスキーマ情報用のツールを備えた業界標準です。DevKit は、WSDL ファイルを使用してコネクタを作成するのに役立つツールを提供します。

DevKit 3.9 のデフォルトのコネクタプロジェクトクラス

次に、DevKit 3.9 で作成される開始 ​@Connector​ クラスおよび ​@Configuration​ クラスの例を示します。

package org.mule.modules.newconnector;

import org.mule.api.annotations.Config;
import org.mule.api.annotations.Connector;
import org.mule.api.annotations.Processor;

import org.mule.modules.connpom.config.ConnectorConfig;

@Connector(name="connpom", friendlyName="Connpom")
public class ConnpomConnector {

    @Config
    ConnectorConfig config;

    /**
     * Custom processor
     *
     * @param friend Name to be used to generate a greeting message.
     * @return A greeting message
     */
    @Processor
    public String greet(String friend) {
        /*
         * MESSAGE PROCESSOR CODE GOES HERE
         */
        return config.getGreeting() + " " + friend + ". " + config.getReply();
    }

    public ConnectorConfig getConfig() {
        return config;
    }

    public void setConfig(ConnectorConfig config) {
        this.config = config;
    }

}

DevKit 3.9 の ​@Configuration​ クラスは次のとおりです。

package org.mule.modules.newconnector.config;

import org.mule.api.annotations.components.Configuration;
import org.mule.api.annotations.Configurable;
import org.mule.api.annotations.param.Default;

@Configuration(friendlyName = "Configuration")
public class ConnectorConfig {

    /**
     * Greeting message
     */
    @Configurable
    @Default("Hello")
    private String greeting;

    /**
     * Reply message
     */
    @Configurable
    @Default("How are you?")
    private String reply;

    /**
     * Set greeting message
     *
     * @param greeting the greeting message
     */
    public void setGreeting(String greeting) {
        this.greeting = greeting;
    }

    /**
     * Get greeting message
     */
    public String getGreeting() {
        return this.greeting;
    }

    /**
     * Set reply
     *
     * @param reply the reply
     */
    public void setReply(String reply) {
        this.reply = reply;
    }

    /**
     * Get reply
     */
    public String getReply() {
        return this.reply;
    }

}

DevKit 3.9 のデフォルトの pom.xml

DevKit 3.9 プロジェクトの ​pom.xml​ ファイル。​<parent>​ セクションに DevKit のグループ ID ​org.mule.tools.devkit​ が示されています。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>
    <groupId>org.mule.modules</groupId>
    <artifactId>newconnector-connector</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <packaging>mule-module</packaging>
    <name>Mule Newconnector Anypoint Connector</name>

    <parent>
        <groupId>org.mule.tools.devkit</groupId>
        <artifactId>mule-devkit-parent</artifactId>
        <version>3.9.0</version>
    </parent>

    <properties>
        <category>Community</category>
        <licensePath>LICENSE.md</licensePath>
        <devkit.studio.package.skip>false</devkit.studio.package.skip>
    </properties>
    <repositories>
        <repository>
            <id>mulesoft-releases</id>
            <name>MuleSoft Releases Repository</name>
            <url>http://repository.mulesoft.org/releases/</url>
            <layout>default</layout>
        </repository>
    </repositories>
</project>

DevKit がサポートするコネクタ機能