Thursday, May 15, 2014

Alfrescoでファイルを別のAlfrescoインスタンスに転送する(レプリケーションジョブ)

こんにちは。週末に富士芝桜まつりに行ってきたものの六分咲きで不完全燃焼なおおたにです。

芝桜は見ごろでは無かったのですが、当日は天気がよく富士山がとても綺麗でした。下の写真は新倉山浅間公園の忠霊塔で撮ってきたものです。周囲の木々は桜なので、春にはもっと綺麗な景色を眺めることができるようです。約400段の階段を登る必要がありますが、おすすめスポットです。



さて、今回は、あるAlfrescoに保存されているファイルを別のAlfrescoリポジトリに転送する(一方通行で同期する)レプリケーションジョブという機能を説明したいと思います。以下では、Alfresco Community 4.2.f に基づいて説明します。


レプリケーションジョブとは


レプリケーションジョブとは、あるAlfresco上の特定のフォルダを、別のAlfrescoリポジトリに転送する機能です。特定のフォルダ以下のファイルだけを、別のAlfresco上で公開したい、という要件を実現することができます。この機能の主な特徴は以下のとおりです。

  • 転送は一方通行で、転送先のフォルダは転送元のフォルダと同期されます。つまり、転送元でファイルが削除されると、転送先でもファイルが削除されます。
  •  転送先のフォルダパスを選べません。必ず転送元のフォルダパスと同じ場所に転送されます。
  •  転送先のファイルをロックすることができます(リードオンリーモード)。リードオンリーモードの場合、転送先のAlfrescoでは転送されたファイルを削除することができません。


レプリケーションを有効にする


デフォルトの状態ではレプリケーションが無効になっているため、設定を変更してレプリケーションを有効にする必要があります。

まずは、alfresco-global.propertiesでレプリケーションを有効にする設定を行います。なお、replication.transfer.readonlyをtrueに設定すると、前述のリードオンリーモードとなります。

<tomcat_dir>/shared/classes/alfresco-global.properties
replication.transfer.readonly=true
replication.enabled=true


続いて、share-config-custom.xmlでレプリケーション先のAlfrescoを設定します。ファイルが無い場合は以下の内容のファイルを新規作成し、既に存在する場合はconfigセクションを既存のalfresco-configセクションに追加します。なお、repositoryIdは、http://<転送先AlfrescoサーバIP>:<ポート番号>/alfresco/service/cmis/index.html にブラウザでアクセスし、CMIS Repository Informationを展開すると確認できますので、そのリポジトリIDを入力します。その後のShare URLも転送先Alfrescoサーバのものを入力してください。

<tomcat_dir>/shared/classes/alfresco/web-extension/share-config-custom.xml
<alfresco-config>
   <config evaluator="string-compare" condition="Replication">
      <share-urls>
         <share-url repositoryId="7519130f-0305-46f5-b27a-ffe51f3084f6">http://127.0.0.1:7080/share/</share-url>
      </share-urls>
   </config>
</alfresco-config>



上記2ファイルの設定が終わったら、Alfrescoを再起動しましょう。


転送先サーバへの接続を設定する


続いて、転送先Alfrescoへの接続設定を行います。adminユーザでAlfrescoにログインし、「リポジトリ」→「Data Dictionary」→「Transfers」→「Transfer Target Groups」→「Default Group」に移動し、フォルダtestを作成します。フォルダtestの「プロパティを編集」をクリックし、転送先サーバIP(ホスト名)、ポート番号、パス(このままでOK)、プロトコル、認証情報を入力し、「有効」にチェックを付けて「保存」をクリックします。



レプリケーションジョブを設定する


以上で、レプリケーションジョブの準備が完了しました。あとはレプリケーションジョブを設定するたけです。adminユーザでAlfrescoにログインし、適当に転送対象フォルダを作成してファイルを追加しておきます。続いて、「管理者ツール」→「レプリケーションジョブ」を開き、ジョブの作成」をクリックします。



ソースアイテムに転送対象フォルダを選択し、転送ターゲットに転送先サーバ接続設定を指定します。スケジュール実行が必要な場合はその開始日時と間隔を指定します。最後に「有効」にチェックを付けて「ジョブの作成」をクリックします。





テストしてみよう


では、早速テストしてみましょう。ジョブを作成すると「レプリケーションジョブ」画面に戻るので、先ほど作成したジョブの「ジョブの実行」をクリックしてみましょう。ジョブ実行後、しばらくしてから画面をリロードしてみて「最後のジョブは成功しました。」と表示されたらテスト成功です。



転送先のAlfrescoにログインし、転送対象フォルダが同期されていることが確認できると思います。なお、転送先のファイルには転送されてきたことを示すアイコンが表示されます。さらに、リードオンリーモードの場合は削除やプロパティの編集ができないようになります。




今回の内容は以上になります。詳しい設定方法はAlfrescoのオンラインヘルプに載っていますので参考にしてください。


No comments: