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