ベストプラクティス

SDK ベストプラクティスの概要を次に示します。モジュールを開発するときに推奨されるヒントとコツが含まれています。

エンドツーエンドのエクスペリエンスの確認

モジュールを公開する前に、Studio と Design Designer でそれを試します。優れた操作性と環境が提供されることを確認します。機能しても使いにくいモジュールは不完全です。

モジュール Java API

SDK は、クラス単位ではなくパッケージ単位でエクスポートします。エクスポートするパッケージを判断するために、SDK は各設定、接続、コンポーネントの戻り値と入力種別を調べてそれらのパッケージを取得します。そのため、​エクスポートしない クラスがエクスポートされるパッケージから除外されていることを確認する必要があります。エクスポートされるクラスは、エクスポートしないクラスとパッケージを共有していない必要があります。

次のパッケージ階層をお勧めします (MuleSoft モジュールで内部的に使用)。

org.mule.module
\--> .api.*
\--> .internal.*
  • .api.* には、Mule アプリケーションによってエクスポートされ表示されるすべてのクラス (戻り値のデータ型、サブタイプ、入力種別、接続インターフェース) が含まれる。

  • .internal.* には、モジュールの特定の動作に使用されるすべてのクラス (アノテーション付きのクラス、Connection および Operation 実装と内部クラス) が含まれる。

モジュールで定義されたパッケージ​のみ​をエクスポートします。他の連動関係ライブラリからのパッケージはエクスポート​しないでください

すべての型は DataWeave に準拠している​必要があります。つまり、公開されるすべての型には、使用可能な各項目に空のコンストラクタと getter メソッドが必要です。

@ErrorTypes

  • Mule は例外ではなくエラーを基準として動作する。各操作はどのエラーをスローできるかを宣言する必要があり、各モジュールではその独自のエラーを定義します。

  • ModuleException を使用して例外をラップし、それをカスタムエラー種別で強化する。

  • 例外クラスはモジュールにエクスポートしない。

Config と ConnectionProvider の比較

  • Config には、モジュールのしくみを制御するすべてのパラメータが含まれる。

  • ConnectionProvider には、接続を生成するために必要なすべてのパラメータが含まれる。

デフォルトでは、すべてに式を使用できます。式でパラメータを設定できるようにしても意味がない場合があるため、このオプションを次の方法で無効にできます。

@Expression(NOT_SUPPORTED)

MuleContext にはアクセスしない

モジュールが MuleContext にアクセスする必要がある唯一の理由は、特定のランタイムサービスを取得するためです。代わりに @Inject を使用してそれらのサービスを取得します。

次は使用しないでください。

muleContext.getRegistry().lookupByType(MyClass.class)

代わりに次を使用します。

public class MyComponent {
    @Inject
    MyClass myClass;
}

トランザクション

非トランザクション操作は、トランザクション接続を受け取ってはいけません。SDK はそれらの操作をトランザクションにし、Studio では、トランザクションオプションが誤ってユーザに表示されます。

Mule HTTP クライアントの使用

  • Jersey または同様の HTTP ライブラリは使用しない。HTTP コネクタを使用して、非ブロック実行を含む、HTTP 要求のすべての機能へのアクセスを提供します。

  • TLS が必要なエンドポイントには特に注意する。TlsContextFactory が適切に初期化されていることを確認します。

Mule SOAP クライアントの使用

  • Web サービスのコンシュームに CXF または同様のライブラリは使用しない。Mule SOAP サービスを使用します。これにより、Web サービスコンシューマのすべての機能にアクセスできます。

SDK バージョンの選択

通常、開発者は特定の製品で使用可能な最新バージョンを使用する傾向にあります。これは SDK の場合には適用しないでください。Mule を拡張するには、次の手順を実行します。

  1. 必要な機能を特定します。

  2. 必要な機能が含まれる下位バージョンを選択します。

適切な SDK バージョンの選択についての詳細は、「SDK バージョンの選択」を参照してください。

その他

  • ボックス入力のブールは使用しない。使用できるのはネイティブブールのみです。すべての boolean パラメータは省略可能とみなされ、デフォルトで false に設定されます。@Optional アノテーションを使用して、特定の boolean のデフォルトを変更できますが、必須パラメータにすることはできません。

  • List または Array パラメータの複数形の名前を使用する。

  • 操作で設定を上書きする場合は常に @ConfigOverride を使用する。

  • @DefaultEncoding を使用してランタイムのデフォルトエンコーディングを取得する。

  • @Nullsafe: NullPointerException の問題を回避するために適切な場合は常に使用する。

  • 日付: java.util.Date または java.util.Calendar は使用しない。代わりに Java 8 java.time.LocalDate を使用します。

Was this article helpful?

💙 Thanks for your feedback!

Edit on GitHub