Neo4j コネクタ

Select

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

前提条件

このドキュメントは、読者が Neo4j、Mule、Anypoint コネクタ、Anypoint Studio、Mule の概念、Mule フローの要素、グローバル要素に精通していることを前提としています。

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

ハードウェアとソフトウェアの要件および互換性に関する情報は、このドキュメントの「関連情報」セクションに記載された「コネクタリリースノート」を参照してください。

Maven でこのコネクタを使用するには、Anypoint Exchange の [Dependency Snippets (連動関係スニペット)] で pom.xml の連動関係情報を確認してください。

このコネクタの新機能

Mule 4 のサポートが追加されました。

メタデータ

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

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

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

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

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

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

Design Center での接続方法

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

    トリガオプション
  2. To create an HTTP global element for the connector, set these fields:

    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 コネクタの基本操作では、クエリで表示ラベルを 1 つだけ使用してノードを絞り込むことができます。クエリ内で複数の表示ラベルを使用して絞り込む場合は、[Execute (実行)] 操作で適切な CQL ステートメントを実行します。

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

    コネクタの設定
    項目 説明

    Username (ユーザ名)

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

    Password (パスワード)

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

    BOLT URL

    Bolt エンドポイント。

    REST URL

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

Anypoint Studio 7 での接続

このコネクタは、連動関係として Mule アプリケーションに追加すれば Anypoint Studio で使用できます。

Studio でコネクタをインストールする

  1. Anypoint Studio で、Studio タスクバーの Exchange アイコンをクリックします。

  2. Anypoint Exchange で [Login (ログイン)] をクリックします。

  3. コネクタを検索して [Install (インストール)] をクリックします。

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

コネクタをインストールしたら、pom.xml ファイルが正しく設定されていることを確認します。

  1. Anypoint Studio で Mule プロジェクトを開きます。

  2. コネクタを連動関係として pom.xml ファイルに追加します。

    <dependency>
      <groupId>org.mule.connectors</groupId>
      <artifactId>mule-neo4j-connector</artifactId>
      <version>3.0.0</version>
      <classifier>mule-plugin</classifier>
    </dependency>

Studio で設定する

  1. コネクタをドラッグして Studio キャンバスにドロップします。

  2. 操作を選択します。

    操作コネクタ
    名前 説明

    Execute (実行)

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

    Create Node (ノードを作成)

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

    Select Nodes (ノードを選択)

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

    Update Nodes (ノードを更新)

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

    Delete Nodes (ノードを削除)

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

    注意: Neo4j コネクタの基本操作では、クエリで表示ラベルを 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 コネクタをキャンバスにドラッグし、デフォルト値で設定します。

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

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

    パラメータ

    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

    Operation (操作)

    Create node

    Label (表示ラベル)

    Person

    Parameters Reference (パラメータ参照)

    #[payload]

    Create node

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

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

    パラメータ

    Operation (操作)

    Select nodes

    Label (表示ラベル)

    Person

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

    パラメータ

    Operation (操作)

    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 コネクタをキャンバスにドラッグし、デフォルト値で設定します。

  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 コネクタをキャンバスにドラッグし、次の表に従って新しいグローバル要素を設定します。

    パラメータ

    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

    Operation (操作)

    Execute

    Query (クエリ)

    #[vars.create]

    Parameters Reference (パラメータ参照)

    #[payload]

    Create node

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

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

    パラメータ

    Display Name (表示名)

    Select node (Multi-label)

    Operation (操作)

    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>

Was this article helpful?

💙 Thanks for your feedback!

Edit on GitHub