10. MagicfolderとRemoteObjectの連携¶
10.1. 概要¶
Magicfolder と RemoteObject のジョブは連携して利用することができます。 ジョブを連携して利用することで以下のような操作を実現することができます。
- Magicfolder で実行したジョブの履歴を RemoteObject で取得する。
- Magicfolder で実行したジョブを RemoteObject で再実行する。
ジョブの連携にはジョブの有効期限の設定が必要となります。
注意
Magicfolder Plus と RemoteObject のジョブは連携して利用できません。
10.2. 準備¶
10.2.1. Magicfolder のジョブの有効期限の設定¶
Magicfolder へログインし、ホーム画面から 「ジョブ設定」 をクリックします。

「日数指定」 を選択し、 「30」 と指定して 「設定」 ボタンをクリックします。 「保存して再起動する」 ボタンが表示されるので、クリックします。
ヒント
ジョブ設定は RemoteObject をインストールしている場合のみ表示されます。
ヒント
「30」を指定することで Magicfolder の監視フォルダで実行されたジョブは30日間だけ RemoteObject のクライアントAPIから参照できるようになります。 30日間を過ぎるとストレージから自動で削除されるためジョブは参照できなくなります。
一定期間の経過後もジョブを削除せずに保管しておきたい場合は「無期限」を指定してください。 この場合、RemoteObject のクライアントAPIからジョブを削除しない限り削除されません。
注意
1ジョブの実行時間が1日を超える場合は、有効期限をジョブの実行時間以上に設定する必要があります。
以上で Magicfolder のジョブの有効期限の設定は完了です。
10.2.2. RemoteObject のジョブの有効期限の設定¶
RemoteObject へログインし、ホーム画面から 「ジョブ設定」 をクリックします。

「日数指定」 を選択し、 「30」 と指定して 「設定」 ボタンをクリックします。 「保存して再起動する」 ボタンが表示されるので、クリックします。
注意
1ジョブの実行時間が1日を超える場合は、有効期限をジョブの実行時間以上に設定する必要があります。
以上で RemoteObject のジョブの有効期限の設定は完了です。
10.3. ジョブの連携¶
10.3.1. ジョブの生成と再実行¶
ジョブの有効期限の設定が正しく行われている場合、Magicfolder の監視フォルダで実行したジョブが RemoteObject のクライアントAPIから参照できるようになります。
まず、Magicfolder で任意のジョブIDを割り当てるための設定を行います。 Magicfolder へログインし、ホーム画面から 「監視フォルダ設定」 をクリックします。 監視フォルダ設定画面から監視フォルダを新規追加するか既存の監視フォルダ情報を開きます。 監視フォルダ情報画面にある 「ルール」 タブをクリックし、以下の設定を行います。
- ファイル名からパラメータを取得
- 有効
- 区切り文字
- ._
- パラメータ (1項目)
- [ジョブ] ジョブID

「変更内容を確定する」 ボタンをクリックして監視フォルダの設定を保存します。
この設定により、ファイル名の「1項目」が「ジョブID」として認識されます。 例えば、「abc123_data.csv」というデータファイルを監視フォルダへ投入した場合、「abc123」としてジョブIDが割り当てられ、ジョブが生成されます。 このジョブIDを RemoteObject のクライアントAPIで指定してジョブを取得し、再実行します。
CreateForm server = CreateForm.getInstance("localhost", 56789);
Job job = server.lookupJob("abc123"); // ジョブIDが「abc123」のジョブを取得
JobResult result = job.execute(); // ジョブを再実行
注意
ジョブIDに指定可能な文字列は以下の通りです。
- 80文字以内
- 英数字または + - . _ ~ @
注意
ジョブIDを割り当てずにジョブを生成した場合、ジョブIDに一意な値が自動で割り当てられます。 そのため、CreateForm オブジェクトの lookupJob メソッドを使用してジョブIDを直接指定してジョブを取得することができなくなります。
このように、RemoteObject のクライアントAPIで取得した Magicfolder のジョブは、そのまま RemoteObject のクライアントAPIで再実行することができます。
10.3.2. ジョブ一覧の取得¶
ジョブIDは指定せず、ジョブの一覧を取得してすべてのジョブを再実行することができます。
CreateForm server = CreateForm.getInstance("localhost", 56789);
for (JobDescriptor jobDesc : server.listJobs()) {
// ジョブを一件ずつ処理
Job job = server.lookupJob(jobDesc.getId()); // ジョブを取得
job.execute(); // ジョブを再実行
}
10.3.3. ジョブの設定変更と再実行¶
印刷ページや部数、ランタイム種別など、ジョブの設定を変更して再実行することができます。
CreateForm server = CreateForm.getInstance("localhost", 56789);
Job job = server.lookupJob("abc123"); // ジョブIDが「abc123」のジョブを取得
job.addOpt("pse", "2"); // 2 ページ目だけを再印刷
job.addOpt("nc", "3"); // 3 部印刷
job.setMode(CreateFormMode.PRINTSTAGE); // PrintStage に変更
JobResult result = job.execute(); // ジョブを再実行
10.3.3.1. ジョブプロパティ¶
RemoteObject にはジョブプロパティという機能があり、これを利用することで Magicfolder と RemoteObject で値の受け渡しができます。
例えば、「in.name」というジョブプロパティには、そのジョブの入力データのファイル名が設定されています。 RemoteObject のクライアントAPIでは、この値にアクセスすることができます。
String name = job.getProperty("in.name");
これにより、監視フォルダから生成したジョブに設定されている入力データファイル名をクライアントAPIから判断することができます。
それ以外にも、利用可能なジョブプロパティがいくつか存在します。 ジョブプロパティの詳細については、Magicfolder のヘルプのパラメータをご覧ください。
10.3.4. フリーパラメータ¶
Magicfolder で利用可能なジョブプロパティの中に「user.1」~「user.5」という「フリーパラメータ」があります。 このフリーパラメータには、値を自由に格納して使用することができます。 これを活用することで、ジョブに固有のIDなどを埋め込んで RemoteObject のクライアントAPIで追跡するようなことも実現できます。
例えば、監視フォルダ情報の「ルール」タブで以下のような設定にしておきます。
- ファイル名からパラメータを取得
- 有効
- 区切り文字
- ._
- パラメータ (1項目)
- [未分類] フリーパラメータ1
この監視フォルダに「abc123_sheet.csv」のようなファイル名でデータを投入します。 すると「abc123」の部分が「user.1」に割り当てられます。
この値は RemoteObject のクライアントAPIで以下のように取得することができます。
String value = job.getProperty("user.1"); // -> "abc123"
さらに Magicfolder のアノテーション機能を利用すると、独自のジョブプロパティを定義することもできます。
例えば、「xyz」というジョブプロパティは定義されていないため、通常は Magicfolder のルールからは設定することができません。 また、RemoteObject のクライアントAPIで取得しても「null」が返されます。
String value = job.getProperty("xyz"); // -> null
しかし、アノテーションで入力データファイルに記述することで、任意のジョブプロパティを定義することができます。
<cf:mf-annotation>
xyz = abc123
</cf:mf-annotation>
...
このように、アノテーションを利用してジョブプロパティを定義することで、RemoteObject のクライアントAPIで独自のジョブプロパティを扱うことができます。
String value = job.getProperty("xyz"); // -> "abc123"
注意
読取専用のジョブプロパティについてはアノテーションから定義できません。 ジョブプロパティの詳細については、Magicfolder のヘルプのパラメータをご覧ください。