# 拡張機能

企業は、多くの場合、企業ファイアウォールの背後にオンプレミスのアプリケーションとデータベースをデプロイしています。

Workato のオンプレミス拡張機能を利用すると、Java を使用してレガシーアプリケーションに接続できます。拡張機能は、Workato オンプレミスエージェントのサーブレットとして登録され、レシピ内から使用できる REST エンドポイントとして公開されます。

拡張機能を使用するべき場合 :

  • アプリケーションに REST/SOAP API がない。
  • アプリケーションにサポートされている JAVA ライブラリがある。

拡張機能を使用しない場合 :

  • アプリケーションに REST/SOAP API がある。HTTP コネクターを使用するか、コネクター SDK でカスタムのコネクションを構築する。
  • シンプルなコマンドラインスクリプトを実行する。その場合はこちらのコマンドラインスクリプトを使用してください。

# 前提条件 :

Java 8 SDK (opens new window)

#

拡張機能がどのようなものかを示すために、SHA-256 メッセージダイジェストを実行するシンプルな拡張機能の作成方法を順を追って説明していきます。この拡張機能は、リクエスト本体を取得し、SHA-256 で暗号化されたバージョンを返します。その後、この拡張機能を REST エンドポイントとして有効化し、レシピ内で使用できるようにします。

# 拡張機能の作成

この拡張機能のリポジトリ (opens new window)をダウンロードします。これは、独自の拡張機能を作成するときに基本テンプレートとして利用できる Gradle プロジェクトです。

オンプレミス拡張機能のソースファイルは src/main/java/com/mycompany/onprem/SecurityExtension.java にあります。

ルートフォルダーで ./gradlew jar を実行して Gradle を起動し、プロジェクトをビルドします。出力先は build/libs/opa-extensions-0.1.jar になります。

# 拡張機能のインストール

OPA 拡張機能をインストールするには、Workato エージェントディレクトリの配下に ext という名前の新しいディレクトリを作成し、ext フォルダーに opa-extensions-0.1.jar を格納します。

クラスパスと新たに追加した拡張機能で conf/config.yml を更新します。これにより、jar ファイルの場所がオンプレミスエージェントに通知されます。

server:
  classpath: C:\\Program Files\\Workato Agent\\ext
extensions:
  security:
    controllerClass: com.mycompany.onprem.SecurityExtension
    secret: HA63A3043AMMMM

上記の classpath の値は、実際の環境に応じた適切な場所に設定する必要があります。

複数の拡張機能がある場合は、以下のようにすべての jar ファイルを ext フォルダーに格納し、extensions の配下に新しいエントリを追加します。

server:
  classpath: C:\\Program Files\\Workato Agent\\ext
extensions:
  security:
    controllerClass: com.mycompany.onprem.SecurityExtension
    secret: HA63A3043AMMMM
  otherextension:
    controllerClass: com.mycompany.onprem.OtherExtension

server パラメータの設定プロパティは以下のとおりです。

プロパティ名 説明
classpath ユーザー定義のクラスの場所を指定します。

extensions パラメータの設定プロパティは以下のとおりです。

プロパティ名 説明
security これは、SDK で使用される拡張機能のプロファイル名です。各拡張機能に一意の名前を使用します。
controllerClass 拡張機能をのマッピング先の Java クラスを OPA に通知するための必須フィールドです。
secret Java クラスで使用されるオプションの環境プロパティです。複数のプロパティを追加できます。

# SDK の構築

レシピで拡張機能を使用するには、Workato でカスタムコネクター (SDK) が必要です。以下のコードを使用し、コネクターページ (opens new window)でカスタムコネクターを作成します。

{
  title: 'On-prem security',
  secure_tunnel: true,

  connection: {
    fields: [{ name: 'profile', hint: 'On-prem security connection profile' }],
    authorization: { type: 'none'},
    apply: ->() {
      headers('X-Workato-Connector': 'enforce')
    }
  },

  test: ->(connection) {
    post("http://localhost/ext/#{connection['profile']}/computeDigest", { payload: 'test' })
  },

  actions: {
    sha256_digest: {
      title: 'Create SHA-256 digest',
      description: 'Create <span class="provider">SHA-256</span> digest',

      input_fields: -> { [{ name: 'payload' }] },
      output_fields: -> { [{name: 'signature' }] },

      execute: ->(connection, input) {
        post("http://localhost/ext/#{connection['profile']}/computeDigest", input)
      }
    }
  }
}

SDK コードでは以下の注意点に留意してください。

  • secure_tunnel を true に設定すると、コネクションの作成時に、OPA を選択できます。拡張機能を備えた OPA を選択するようにしてください。

  • ヘッダー X-Workato-Connector: enforce を使用すると、これが OPA 拡張機能と通信するためのリクエストであることを OPA に通知できます。

  • パス http://localhost/ext/#{connection['profile']}/computeDigest は Java クラスで定義されます。

@RequestMapping(path = "/computeDigest", method = RequestMethod.POST)


Last updated: 2023/8/31 1:07:14