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 つある。

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>