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 を使用してコネクタを追加する
-
Studio で Mule プロジェクトを作成します。
-
Studio タスクバーの左上にある Exchange アイコン (X) をクリックします。
-
Exchange で、[Login (ログイン)] をクリックし、Anypoint Platform のユーザー名とパスワードを指定します。
-
Exchange で、「neo4j」を検索します。
-
コネクタを選択して [Add to project (プロジェクトに追加)] をクリックします。
-
画面の指示に従ってコネクタをインストールします。
Studio でコネクタに追加する
-
Studio で Mule プロジェクトを作成します。
-
[Mule Palette (Mule パレット)] ビューで、[(X) Search in Exchange ((X) Exchange 内を検索)] をクリックします。
-
[Add Modules to Project (モジュールをプロジェクトに追加)] で、検索項目に「neo4j」と入力します。
-
[Available modules (使用可能なモジュール)] で、このコネクタの名前をクリックします。
-
[Add (追加)] をクリックします。
-
[Finish (完了)] をクリックします。
Studio で設定する
-
Neo4j の操作を Studio キャンバスにドラッグします。
-
操作を選択します。
名前 説明 Execute
データベースに対して任意の CQL ステートメントを実行します。
Create Node
特定の初期表示ラベルを使用してノードを作成します。必要に応じてノードにプロパティを追加できます。
Select Nodes
特定の表示ラベルを使用するノードを照会します。必要に応じて、検索条件として使用するプロパティを指定できます。
Update Nodes
特定の表示ラベルを使用する 1 つまたは複数のノードのプロパティを変更します。必要に応じて検索条件としてプロパティを追加できます。
Delete Nodes
特定の表示ラベルに基づいて 1 つまたは複数のノードを削除します。インバウンド/アウトバウンドリレーションのあるノードを削除できます。必要に応じて検索条件としてプロパティを追加できます。
注意: Neo4j Connector の基本操作では、クエリで表示ラベルを 1 つだけ使用してノードを絞り込むことができます。クエリ内で複数の表示ラベルを使用して絞り込む場合は、[Execute (実行)] 操作で適切な CQL ステートメントを実行します。
-
コネクタのグローバル要素を設定します。
項目 説明 Username (ユーザー名)
ログインに使用するユーザー名を入力します。
Password (パスワード)
対応するパスワードを入力します。
BOLT URL
Bolt エンドポイント。
REST URL
Rest エンドポイント URL (HTTP または HTTPS で使用できる)。
ユースケース: ノードの基本 CRUD
-
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> -
HTTP Connector をキャンバスにドラッグし、デフォルト値で設定します。
-
[Transform Message (メッセージの変換)] をキャンバスにドラッグし、次のコードを使用して params という名前でフロー変数を作成します。
%dw 2.0 %output application/json --- { "name":"Tom Hanks", "born": 1956 } -
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> -
プロパティエディターで次のように設定します。
パラメーター 値 Display Name (表示名)
Create node
Connector Configuration (コネクタ設定)
Neo4j__Basic_Authentication
操作
Create node
Label (表示ラベル)
Person
パラメーターリファレンス
#[payload]
注意: [Test Connection (接続をテスト)] をクリックして、Mule が Neo4j インスタンスに接続できることを確認します。正常に接続できた場合は、[OK] をクリックして設定を保存します。失敗した場合は、パラメーターを確認して修正し、もう一度テストを実行してください。
-
Neo4j Connector をキャンバスにドラッグして、プロパティエディターで次のパラメーターを設定します。
パラメーター 値 操作
Select nodes
Label (表示ラベル)
Person
-
Neo4j Connector をキャンバスにドラッグして、プロパティエディターで次のパラメーターを設定します。
パラメーター 値 操作
Delete nodes
Label (表示ラベル)
Person
-
[Transform Message (メッセージの変換)] をキャンバスにドラッグします。
%dw 2.0 %output application/json --- payload -
変更内容を保存して、Mule アプリケーションとしてプロジェクトをデプロイします。ブラウザーを開いて、次の URL に要求を送信します。
http://localhost:8081/CRUDノードが正常に作成および削除されたら、情報が JSON 形式で表示されます。
{"born":1956,"name":"Tom Hanks"}
複数の表示ラベルを使用するノードを作成する
-
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> -
HTTP Connector をキャンバスにドラッグし、デフォルト値で設定します。
-
[Transform Message (メッセージの変換)] をキャンバスにドラッグし、次のコードを使用して 2 つのフロー変数を作成します。
-
Variable-create
%dw 2.0 %output application/json --- "CREATE (a:ACTOR:PERSON { name:\"Tom Hanks\", born:1956 })" -
Variable-select
%dw 2.0 %output application/json --- "MATCH (a:ACTOR:PERSON) RETURN a"
-
-
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> -
プロパティエディターで次のように設定します。
パラメーター 値 Display Name (表示名)
Create node (advanced)
Connector Configuration (コネクタ設定)
Neo4j__Basic_Authentication
操作
Execute
Query (クエリ)
#[vars.create]パラメーターリファレンス
#[payload]
[Test Connection (接続をテスト)] をクリックして、Mule が Neo4j インスタンスに接続できることを確認します。正常に接続できた場合は、[OK] をクリックして設定を保存します。失敗した場合は、パラメーターを確認して修正し、もう一度テストを実行してください。
-
Neo4j Connector をキャンバスにドラッグして、プロパティエディターで次のパラメーターを設定します。
パラメーター 値 Display Name (表示名)
Select node (Multi-label)
操作
Execute
Query (クエリ)
#[vars.select] -
[Transform Message (メッセージの変換)] をキャンバスにドラッグします。
-
[Logger (ロガー)] をキャンバスにドラッグします。
-
変更内容を保存して、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>