Neo4j Connector - Mule 4

Neo4j Connector v3.0

Neo4j 用 Anypoint Connector では、CQL ステートメントを実行、および Neo4j Graph データベースインスタンスに対してノードの作成、更新、削除、選択などの基本操作を実行することができます。

リリースノート: Neo4j Connector リリースノート
Exchange: Neo4j Connector

始める前に

この情報を使用するには、Neo4j、Mule、Anypoint Connector、Anypoint Studio、Mule の概念、Mule フローの要素、グローバル要素に精通している必要があります。

対象リソースへの接続をテストするには、ログイン情報が必要です。

ソフトウェアの要件および互換性情報については、「コネクタリリースノート」を参照してください。

POM ファイル情報

<dependency>
  <groupId>com.mulesoft.connectors</groupId>
  <artifactId>mule-neo4j-connector</artifactId>
  <version>x.x.x</version>
  <classifier>mule-plugin</classifier>
</dependency>

x.x.x​ を使用しているコネクタに対応するバージョンに置き換えます。

最新の ​pom.xml​ ファイル情報を取得するには、​ Anypoint Exchange​ でコネクタにアクセスし、​[Dependency Snippets (連動関係スニペット)]​ をクリックします。

メタデータ

Neo4j Connector のメタデータは、次の前提に基づいています。

  • 操作の表示ラベルは、データベースでインスタンス化される表示ラベルである。

  • データベースにはノードに対する次の制約がある。

    • 一意のプロパティの制約。

    • プロパティ存在の制約。

    • データベースで制約値が定義されたノードが少なくとも 1 つある。

Design Center での接続

  1. HTTP リスナートリガーやスケジューラートリガーなどのトリガーをクリックします。

    トリガーオプション
  2. コネクタの HTTP グローバル要素を作成するには、次の項目を設定します。

    HTTP リスナーの設定
    項目 説明

    Protocol (プロトコル)

    HTTP エンドポイントのプロトコル。HTTP または HTTPS (セキュア) を選択できます。

    Host (ホスト)

    Mule アプリケーションが要求をリスンする IP アドレス。

    Port (ポート)

    Mule アプリケーションが要求をリスンするポートアドレス。

    Base Path (ベースパス)

    Mule アプリケーションが要求をリスンするパス。

  3. プラス記号を選択して、コンポーネントを追加します。

    コネクタの追加
  4. コンポーネントとしてコネクタを選択します。

  5. 操作を選択します。

    操作コネクタ
    名前 説明

    Execute

    データベースに対して任意の CQL ステートメントを実行します。

    Create Node

    特定の初期表示ラベルを使用してノードを作成します。必要に応じてノードにプロパティを追加できます。

    Select Nodes

    特定の表示ラベルを使用するノードを照会します。必要に応じて、検索条件として使用するプロパティを指定できます。

    Update Nodes

    特定の表示ラベルを使用する 1 つまたは複数のノードのプロパティを変更します。必要に応じて検索条件としてプロパティを追加できます。

    Delete Nodes

    特定の表示ラベルに基づいて 1 つ以上のノードを削除します。インバウンドまたはアウトバウンドリレーションのあるノードを削除できます。必要に応じて検索条件としてプロパティを追加できます。

    注意: Neo4j Connector の基本操作では、クエリで表示ラベルを 1 つだけ使用してノードを絞り込むことができます。クエリ内で複数の表示ラベルを使用して絞り込む場合は、[Execute (実行)] 操作で適切な CQL ステートメントを実行します。

  6. コネクタのグローバル要素を設定します。

    コネクタの設定
    項目 説明

    Username (ユーザー名)

    ログインに使用するユーザー名を入力します。

    Password (パスワード)

    対応するパスワードを入力します。

    BOLT URL

    Bolt エンドポイント。

    REST URL

    Rest エンドポイント URL (HTTP または HTTPS で使用できる)。

Studio プロジェクトへのコネクタの追加

Anypoint Studio には、Studio プロジェクトにコネクタを追加する 2 つの方法があります。Studio タスクバーの Exchange ボタンから追加するか、[Mule Palette (Mule パレット)] ビューから追加します。

Exchange を使用してコネクタを追加する

  1. Studio で Mule プロジェクトを作成します。

  2. Studio タスクバーの左上にある Exchange アイコン ​(X)​ をクリックします。

  3. Exchange で、​[Login (ログイン)]​ をクリックし、Anypoint Platform のユーザー名とパスワードを指定します。

  4. Exchange で、「neo4j」を検索します。

  5. コネクタを選択して ​[Add to project (プロジェクトに追加)]​ をクリックします。

  6. 画面の指示に従ってコネクタをインストールします。

Studio でコネクタに追加する

  1. Studio で Mule プロジェクトを作成します。

  2. [Mule Palette (Mule パレット)] ビューで、​[(X) Search in Exchange ((X) Exchange 内を検索)]​ をクリックします。

  3. [Add Modules to Project (モジュールをプロジェクトに追加)]​ で、検索項目に「neo4j」と入力します。

  4. [Available modules (使用可能なモジュール)]​ で、このコネクタの名前をクリックします。

  5. [Add (追加)]​ をクリックします。

  6. [Finish (完了)]​ をクリックします。

Studio で設定する

  1. Neo4j の操作を Studio キャンバスにドラッグします。

  2. 操作を選択します。

    操作コネクタ
    名前 説明

    Execute

    データベースに対して任意の CQL ステートメントを実行します。

    Create Node

    特定の初期表示ラベルを使用してノードを作成します。必要に応じてノードにプロパティを追加できます。

    Select Nodes

    特定の表示ラベルを使用するノードを照会します。必要に応じて、検索条件として使用するプロパティを指定できます。

    Update Nodes

    特定の表示ラベルを使用する 1 つまたは複数のノードのプロパティを変更します。必要に応じて検索条件としてプロパティを追加できます。

    Delete Nodes

    特定の表示ラベルに基づいて 1 つまたは複数のノードを削除します。インバウンド/アウトバウンドリレーションのあるノードを削除できます。必要に応じて検索条件としてプロパティを追加できます。

    注意: Neo4j Connector の基本操作では、クエリで表示ラベルを 1 つだけ使用してノードを絞り込むことができます。クエリ内で複数の表示ラベルを使用して絞り込む場合は、[Execute (実行)] 操作で適切な CQL ステートメントを実行します。

  3. コネクタのグローバル要素を設定します。

    コネクタの設定
    項目 説明

    Username (ユーザー名)

    ログインに使用するユーザー名を入力します。

    Password (パスワード)

    対応するパスワードを入力します。

    BOLT URL

    Bolt エンドポイント。

    REST URL

    Rest エンドポイント URL (HTTP または HTTPS で使用できる)。

ユースケース: ノードの基本 CRUD

フローの例
  1. Anypoint Studio で新しい Mule プロジェクトを作成し、​src/main/resources/automation-credentials.properties​ で Neo4j 環境プロパティを設定します。

    config.username=<USERNAME>
    config.password=<PASSWORD>
    config.boltUrl=<BOLT_URL_ENDOPOINT>
    config.restUrl=<REST_URL_ENDPOINT>
  2. HTTP Connector をキャンバスにドラッグし、デフォルト値で設定します。

  3. [Transform Message (メッセージの変換)] をキャンバスにドラッグし、次のコードを使用して params という名前でフロー変数を作成します。

    %dw 2.0
    %output application/json
    ---
    {
    	"name":"Tom Hanks",
    	"born": 1956
    }
  4. Neo4j Connector をキャンバスにドラッグし、次の表に従って新しいグローバル要素を設定します。

    パラメーター

    Username (ユーザー名)

    ${neo4j.username}

    Password (パスワード)

    ${neo4j.password}

    BOLT URL

    ${neo4j.boltUrl}

    REST URL

    ${neo4j.restUrl}

    <neo4j:config name="Neo4j_Config" doc:name="Neo4j Config">
    	<neo4j:connection username="${config.username}"
    	password="${config.password}"
    	boltUrl="${config.boltUrl}"
    	restUrl="${config.restUrl}" />
    	</neo4j:config>
    </neo4j:config>
  5. プロパティエディターで次のように設定します。

    パラメーター

    Display Name (表示名)

    Create node

    Connector Configuration (コネクタ設定)

    Neo4j__Basic_Authentication

    操作

    Create node

    Label (表示ラベル)

    Person

    パラメーターリファレンス

    #[payload]

    Create node

    注意: [Test Connection (接続をテスト)] をクリックして、Mule が Neo4j インスタンスに接続できることを確認します。正常に接続できた場合は、[OK] をクリックして設定を保存します。失敗した場合は、パラメーターを確認して修正し、もう一度テストを実行してください。

  6. Neo4j Connector をキャンバスにドラッグして、プロパティエディターで次のパラメーターを設定します。

    パラメーター

    操作

    Select nodes

    Label (表示ラベル)

    Person

  7. Neo4j Connector をキャンバスにドラッグして、プロパティエディターで次のパラメーターを設定します。

    パラメーター

    操作

    Delete nodes

    Label (表示ラベル)

    Person

  8. [Transform Message (メッセージの変換)] をキャンバスにドラッグします。

    %dw 2.0
    %output application/json
    ---
    payload
  9. 変更内容を保存して、Mule アプリケーションとしてプロジェクトをデプロイします。ブラウザーを開いて、次の URL に要求を送信します。

    http://localhost:8081/CRUD

    ノードが正常に作成および削除されたら、情報が JSON 形式で表示されます。

    {"born":1956,"name":"Tom Hanks"}

複数の表示ラベルを使用するノードを作成する

フローの例
  1. Anypoint Studio で新しい Mule プロジェクトを作成し、​src/main/resources/automation-credentials.properties​ で Neo4j 環境プロパティを設定します。

    config.username=<USERNAME>
    config.password=<PASSWORD>
    config.boltUrl=<BOLT_URL_ENDOPOINT>
    config.restUrl=<REST_URL_ENDPOINT>
  2. HTTP Connector をキャンバスにドラッグし、デフォルト値で設定します。

  3. [Transform Message (メッセージの変換)] をキャンバスにドラッグし、次のコードを使用して 2 つのフロー変数を作成します。

    1. Variable-create

      %dw 2.0
      %output application/json
      ---
      "CREATE (a:ACTOR:PERSON { name:\"Tom Hanks\", born:1956 })"
    2. Variable-select

      %dw 2.0
      %output application/json
      ---
      "MATCH (a:ACTOR:PERSON) RETURN a"
  4. Neo4j Connector をキャンバスにドラッグし、次の表に従って新しいグローバル要素を設定します。

    パラメーター

    Username (ユーザー名)

    ${neo4j.username}

    Password (パスワード)

    ${neo4j.password}

    BOLT URL

    ${neo4j.boltUrl}

    REST URL

    ${neo4j.restUrl}

    <neo4j:config name="Neo4j_Config" doc:name="Neo4j Config">
    	<neo4j:connection username="${config.username}"
    	password="${config.password}"
    	boltUrl="${config.boltUrl}"
    	restUrl="${config.restUrl}" />
    	</neo4j:config>
    </neo4j:config>
  5. プロパティエディターで次のように設定します。

    パラメーター

    Display Name (表示名)

    Create node (advanced)

    Connector Configuration (コネクタ設定)

    Neo4j__Basic_Authentication

    操作

    Execute

    Query (クエリ)

    #[vars.create]

    パラメーターリファレンス

    #[payload]

    Create node

    [Test Connection (接続をテスト)] をクリックして、Mule が Neo4j インスタンスに接続できることを確認します。正常に接続できた場合は、[OK] をクリックして設定を保存します。失敗した場合は、パラメーターを確認して修正し、もう一度テストを実行してください。

  6. Neo4j Connector をキャンバスにドラッグして、プロパティエディターで次のパラメーターを設定します。

    パラメーター

    Display Name (表示名)

    Select node (Multi-label)

    操作

    Execute

    Query (クエリ)

    #[vars.select]

  7. [Transform Message (メッセージの変換)] をキャンバスにドラッグします。

  8. [Logger (ロガー)] をキャンバスにドラッグします。

  9. 変更内容を保存して、Mule アプリケーションとしてプロジェクトをデプロイします。ブラウザーを開いて、次の URL に要求を送信します。

    http://localhost:8081/createNodeMultiLabel

    ノードが正常に作成および削除されたら、情報が JSON 形式で表示されます。

    [{"a":{"born":1956,"name":"Tom Hanks"}}]

ユースケース: XML

<?xml version="1.0" encoding="UTF-8"?>

<mule xmlns:neo4j="http://www.mulesoft.org/schema/mule/neo4j"
	xmlns:ee="http://www.mulesoft.org/schema/mule/ee/core"
	xmlns:http="http://www.mulesoft.org/schema/mule/http"
	xmlns="http://www.mulesoft.org/schema/mule/core"
	xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.mulesoft.org/schema/mule/core
	http://www.mulesoft.org/schema/mule/core/current/mule.xsd
	http://www.mulesoft.org/schema/mule/http
	http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd
	http://www.mulesoft.org/schema/mule/ee/core
	http://www.mulesoft.org/schema/mule/ee/core/current/mule-ee.xsd
	http://www.mulesoft.org/schema/mule/neo4j
	http://www.mulesoft.org/schema/mule/neo4j/current/mule-neo4j.xsd">
	<http:listener-config name="HTTP_Listener_config"
	doc:name="HTTP Listener config" basePath="/" >
		<http:listener-connection host="0.0.0.0" port="8081" />
	</http:listener-config>
	<neo4j:config name="Neo4j_Config" doc:name="Neo4j Config">
		<neo4j:connection username="${config.username}"
		 password="${config.password}" boltUrl="${config.boltUrl}"
		 restUrl="${config.restUrl}" />
	</neo4j:config>
	<flow name="CRUD" >
		<http:listener doc:name="Listener"
		 config-ref="HTTP_Listener_config" path="/CRUD"/>
		<ee:transform doc:name="Transform Message" >
			<ee:message >
				<ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
{
	"name":"Tom Hanks",
	"born": "1956"
}]]></ee:set-payload>
			</ee:message>
		</ee:transform>
		<neo4j:create-node label="Person" doc:name="Create node"
		 config-ref="Neo4j_Config" input="#[payload]"/>
		<neo4j:select-nodes label="Person" doc:name="Select nodes"
		 config-ref="Neo4j_Config" input="#[payload]"/>
		<neo4j:delete-nodes label="Person" doc:name="Delete nodes"
		 config-ref="Neo4j_Config" parameters="#[payload]"/>
		<ee:transform doc:name="Transform Message">
			<ee:message >
				<ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
payload]]></ee:set-payload>
			</ee:message>
		</ee:transform>
	</flow>
	<flow name="createNodeWithMultiLabels">
		<http:listener doc:name="Listener"
		config-ref="HTTP_Listener_config"
		path="/createNodeMultiLabel"/>
		<ee:transform doc:name="Transform Message">
			<ee:message >
				<ee:set-payload ><![CDATA[%dw 2.0
output application/java
---
{

}]]></ee:set-payload>
			</ee:message>
			<ee:variables >
				<ee:set-variable variableName="select" ><![CDATA[%dw 2.0
output application/json
---
"MATCH (a:ACTOR:PERSON) RETURN a"]]></ee:set-variable>
				<ee:set-variable variableName="create" ><![CDATA[%dw 2.0
output application/json
---
"CREATE (a:ACTOR:PERSON { name:\"Tom Hanks\", born:1956 })"]]></ee:set-variable>
			</ee:variables>
		</ee:transform>
		<neo4j:execute doc:name="Create node (advanced)" config-ref="Neo4j_Config" input="#[payload]">
			<neo4j:query ><![CDATA[#[vars.create]]]></neo4j:query>
		</neo4j:execute>
		<neo4j:execute doc:name="Select node (Multi-label)"  config-ref="Neo4j_Config">
			<neo4j:query ><![CDATA[#[vars.select]]]></neo4j:query>
		</neo4j:execute>
		<ee:transform doc:name="Transform Message">
			<ee:message >
				<ee:set-payload ><![CDATA[%dw 2.0
output application/json
---
payload]]></ee:set-payload>
			</ee:message>
		</ee:transform>
	</flow>
</mule>