XML ファイルでの処理順序の使用シナリオ

このシナリオでは、ある印刷会社がWeb to Print販売店から受信したXMLファイルに含まれる注文を処理するとします。各XMLファイルには複数の注文が含まれており、各注文には印刷項目とプロモーション項目(コーヒーマグやベースボールキャップなど)の両方が含まれている場合があります。

このシナリオでは、RICOH ProcessDirector管理者がサードパーティーのツール(Altova MapForceなど)を使用して、Extensible Stylesheet Language Transformations(XSLT)スタイルシートを作成します。このシナリオとともに扱うXML入力ファイル、XPath表現、XSLTスタイルシート、 RICOH ProcessDirector指定変更ファイルの例については、関連参照トピックを参照してください。

XMLを処理するために確認して準備する

RICOH ProcessDirector管理者は、XMLファイルのコンテンツを確認して、その処理方法を決定します。

  1. まず管理者は、RICOH ProcessDirectorジョブプロパティーの値を提供するXMLエレメントを識別します。

    XML入力ファイルの例では、注文内の各項目を追跡するために必要な情報を2つのXMLエレメントが提供しています。orderエレメントとcustomernameエレメントのnumber属性は、それぞれ注文番号とカスタマー名を提供します。

    印刷項目で、printfileエレメントはダウンロードおよび印刷するPDFファイルのURLを提供します。

    プロモーション項目で、stockエレメントのnumber属性はウェアハウス内の項目の位置を提供します。

    すべての項目で、quantityエレメントは注文の数量を提供します。

    次の表に、これら5つのXMLエレメントと対応する RICOH ProcessDirectorジョブプロパティーの名前を示します。

    XMLエレメント ジョブプロパティーのデータベース名 ジョブプロパティーのユーザーインターフェース名
    <order number> Job.Info.Attr1 Custom 1
    <customername> Job.CustomerName カスタマー名
    <printfile> Job.DownloadFile ダウンロードファイルのURL
    <stock number> Job.Info.Attr2 Custom 2
    <quantity> Job.Copies 要求されたジョブコピー

  2. 管理者は、プロセスを次の5つの部分に分割します。
    • 注文ごとに個別のXMLジョブを作成します。
    • 注文の値(order numbercustomername)をジョブプロパティーに割り当てます。
    • 各注文から、項目ごとに個別のXMLジョブを作成します。
    • 項目の値(printfilestock numberquantity)をジョブプロパティーに割り当てます。
    • 印刷項目と用紙項目を個別のワークフローで処理します。
  3. 管理者は、次の4つのワークフローの定義を決定します。
    • ExtractOrdersFromXMLワークフローが注文を受信して、注文ごとに個別のジョブを作成します。
    • SplitOrderIntoPrintAndStockJobsワークフローが各注文の項目を印刷ジョブと用紙ジョブに分離します。
    • ProcessPrintJobsワークフローが印刷ジョブを処理します。
    • ProcessStockJobsワークフローが用紙ジョブを処理します。

    CreateJobsFromXMLステップテンプレートに基づくステップは、XPath式に一致するXMLファイル内のエレメントからジョブを作成します。このステップは、ワークフローにジョブを実行依頼します。

  4. 管理者は、それぞれ異なるXML Path Language(XPath)表現を持つ3つのCreateJobsFromXMLステップの使用を決定します。
    • 最初のステップは、注文ごとに個別のXMLジョブを作成します。

      注文ジョブ表現は、注文一致するXMLエレメントを識別します。/seller/order

    • 2番目のステップは、印刷項目ごとに個別のXMLジョブを作成します。

      印刷ジョブ表現は、印刷項目と一致するXMLエレメントを識別します。/order/item/printfile/ancestor::item

    • 3番目のステップは、プロモーション項目ごとに個別のXMLジョブを作成します。

      用紙ジョブ表現は、プロモーション項目と一致するXMLエレメントを識別します。/order/item/stock/ancestor::item

    管理者は、CreateJobsFromXMLステップをワークフローに割り当てます。

    • 最初のステップはExtractOrdersFromXMLワークフローに移行します。このステップは各注文のXMLジョブを SplitOrderIntoPrintAndStockJobsワークフローに実行依頼します。
    • 2番目と3番目のステップはSplitOrderIntoPrintAndStockJobsワークフローに移行します。2番目のステップは印刷項目のXMLジョブを ProcessPrintJobsワークフローに実行依頼します。3番目のステップはプロモーション項目のXMLジョブを ProcessStockJobsワークフローに実行依頼します。

    ApplyXSLTransformステップテンプレートに基づくステップは、XML をジョブプロパティーの値を指定する RICOH ProcessDirector 指定変更ファイルに変換できます。

  5. 管理者は、3つのApplyXSLTransformステップの使用を決定します。各ステップは、XSLTスタイルシートを使用します。管理者は、サードパーティーのXSLTツールを使用して、XSLTスタイルシートを作成します。
    • 最初のステップは、注文ジョブXSLTスタイルシートを使用します。さらに、orderエレメントとcustomernameエレメントのname属性を Job.Info.Attr1および Job.CustomerNameジョブプロパティーに変換します。

      このステップは2つのCreateJobsFromXMLステップの前に SplitOrderIntoPrintAndStockJobsワークフローに移行します。

    • 2番目のステップは、印刷ジョブXSLTスタイルシートを使用します。printfileエレメントとquantityエレメントをそれぞれ Job.DownloadFileジョブプロパティーと Job.Copiesジョブプロパティーに変換します。

      このステップはProcessPrintJobsワークフローに移行します。

    • 3番目のステップは、用紙ジョブXSLTスタイルシートを使用します。さらに、numberエレメントとquantityエレメントのname属性を Job.Info.Attr2ジョブプロパティーと Job.Copiesジョブプロパティーに変換します。

      このステップはProcessStockJobsワークフローに移行します。

  6. 管理者は、指定されたURLからDownloadFileステップを使用してPDFファイルをダウンロードします。

    印刷会社ではプロキシサーバーを使用して外部Webサイトと通信するので、管理者はプロキシサーバーを使用するようにRICOH ProcessDirectorをセットアップします。

入力装置とワークフローをセットアップする

管理者は、XMLファイルと4つのワークフローを受信して、それらを処理するために、ホットフォルダー入力装置をセットアップします。

  1. ExtractOrdersFromXMLワークフローは、XML入力ファイルの各注文に対して1つのジョブを作成します。

    SetJobPropsFromTextFileステップと DetectInputDataStreamステップの後に、管理者は CreateJobsFromXMLステップを追加します。管理者はXPath表現の値を/seller/orderに、新しいジョブのワークフローの値を SplitOrderIntoPrintAndStockJobsにそれぞれ設定します。管理者は、新しいジョブが子ジョブとして作成されないように指定します。各注文は個別のジョブです。

  2. SplitOrderIntoPrintAndStockJobsワークフローは各注文ジョブを受信し、印刷およびプロモーション項目用のXMLファイルを作成して、それらを子ジョブとして適切なワークフローに実行依頼します。

    SetJobPropsFromTextFileステップと DetectInputDataStreamステップの後に、管理者は ApplyXSLTransformステップを追加します。このステップは、注文ジョブXSLTスタイルシートを使用します。

    ApplyXSLTransformステップの後に、管理者は2つの CreateJobsFromXMLステップを追加します。

    • 最初のステップで、管理者はXPath表現の値を/order/item/printfile/ancestor::itemに、新しいジョブのワークフローの値を ProcessPrintJobsにそれぞれ設定します。
    • 2番目のステップで、管理者はXPath表現の値を/order/item/stock/ancestor::itemに、新しいジョブのワークフローの値を ProcessStockJobsにそれぞれ設定します。
    • 両方のステップで、管理者は、新しいジョブが子ジョブとして作成されるように指定します。同時に、子ジョブが作成されなかったときに親ジョブが次のステップを続行するように指定します。例えば、注文ジョブに印刷項目が存在しない場合、子ジョブは最初のCreateJobsFromXMLステップでは作成されません。

    2番目のCreateJobsFromXMLステップの後に、管理者は、 WaitForRelatedJobsステップテンプレートに基づくステップを追加します。このステップは、印刷およびプロモーション項目のすべての子ジョブが処理されるまで、親ジョブを保留します。

  3. ProcessPrintJobsワークフローは印刷項目の各ジョブを受信して、その項目を印刷します。

    SetJobPropsFromTextFileステップと DetectInputDataStreamステップの後に、管理者は ApplyXSLTransformステップを追加します。このステップは、印刷ジョブXSLTスタイルシートを使用します。

    ApplyXSLTransformステップの後に、管理者は DownloadFileステップテンプレートに基づくステップを追加して、 Job.DownloadFileプロパティーの値によって指定されたPDFファイルをダウンロードします。管理者は、 ダウンロードしたファイルへのパスプロパティーの値を${getFileName(print,pdf,write)}に設定します。これで、PDFファイルは、ジョブのスプールディレクトリーにダウンロードされます。

    DownloadFileステップに続いて、管理者は、PDFジョブを処理するために印刷会社で使用されるステップを追加します。

    印刷ジョブを処理する最後のステップの後に、管理者は、ManualStepWithAutoStartステップテンプレートに基づくステップを追加します。このステップは、出荷部門で印刷ジョブを注文に追加する時間を出荷担当者に与えます。

    ManualStepWithAutoStartステップの後に、管理者は、 WaitForRelatedJobsステップテンプレートに基づくステップを追加します。このステップは、注文に含まれるすべてのジョブが処理されるまで、注文に含まれる印刷項目の各ジョブを保留します。

  4. ProcessStockJobsワークフローはプロモーション項目の各ジョブを受信して、ウェアハウスからプロモーション項目を取得するのに必要な時間を明らかにします。

    SetJobPropsFromTextFileステップと DetectInputDataStreamステップの後に、管理者は ApplyXSLTransformステップを追加します。このステップは、用紙ジョブXSLTスタイルシートを使用します。

    ApplyXSLTransformステップの後に、管理者は、 ManualStepWithAutoStartステップテンプレートに基づくステップを追加します。このステップは、出荷部門でウェアハウスからプロモーション項目を取得して注文に追加する時間を出荷担当者に与えます。

    ManualStepWithAutoStartステップの後に、管理者は、 WaitForRelatedJobsステップテンプレートに基づくステップを追加します。このステップは、注文に含まれるすべてのジョブが処理されるまで、注文に含まれるプロモーション項目の各ジョブを保留します。

この図は、4つのワークフローを示しています。緑色の線は、各CreateJobsFromXMLステップがXMLジョブを実行依頼する対象のワークフローを示しています。

ワークフローを通じたジョブの処理

管理者がワークフローを使用可能にして、XMLファイルを入力装置に実行依頼すると、RICOH ProcessDirectorは4つのワークフローによってジョブを処理します。

ExtractOrdersFromXMLワークフローは入力装置からXMLジョブを受信して、注文ジョブXPath表現と一致する各orderエレメント用のXMLファイルを作成します。このワークフローは各XMLファイルをジョブとして SplitOrderIntoPrintAndStockJobsワークフローに実行依頼します。

SplitOrderIntoPrintAndStockJobsワークフローは、次の処理を実行します。

  • 各注文ジョブを受信します。
  • 注文ジョブXSLTスタイルシートを使用して、order numberおよびcustomernameエレメントと値をジョブプロパティーと値に変換します。
  • ジョブプロパティーと値を指定変更ファイルに記録します。
  • 印刷ジョブXPath表現と一致する各itemエレメント用のXMLファイルを作成します。このワークフローは各XMLファイルを子ジョブとして ProcessPrintJobsワークフローに実行依頼します。指定変更ファイルのコピーが各子ジョブとともに実行依頼されます。

    用紙ジョブXPath表現と一致する各itemエレメント用のXMLファイルを作成します。このワークフローは各XMLファイルを子ジョブとして ProcessStockJobsワークフローに実行依頼します。指定変更ファイルのコピーが各子ジョブとともに実行依頼されます。

  • すべての子ジョブが処理されるまで、親ジョブを保留します。

ProcessPrintJobsワークフローは、次の処理を実行します。

  • 印刷項目の各ジョブを受信します。
  • 印刷ジョブXSLTスタイルシートを使用して、printfileおよびquantityエレメントと値をジョブプロパティーと値に変換します。
  • ジョブとともに実行依頼された指定変更ファイルの内容を上書きすることで、ジョブプロパティーと値を記録します。
  • Job.DownloadFileプロパティーの値を使用して、各印刷項目のPDFファイルをダウンロードします。
  • PDFファイルを印刷します。
  • 待機している間に、出荷担当者がジョブのカスタム1(注文番号)および カスタマー名プロパティーの値をチェックします。さらに、担当者が出荷部門で印刷項目を注文に追加します。

    ワークフローの次のステップにジョブを移行するため、担当者が手動完了アクションを実行します。

  • 注文処理が完了するまで、印刷項目の各ジョブを保留します。

ProcessStockJobsワークフローは、次の処理を実行します。

  • プロモーション項目の各ジョブを受信します。
  • 用紙ジョブXSLTスタイルシートを使用して、stock numberおよびquantityエレメントと値をジョブプロパティーと値に変換します。
  • ジョブとともに実行依頼された指定変更ファイルの内容を上書きすることで、ジョブプロパティーと値を記録します。
  • 待機している間に、出荷担当者が次のタスクを実行します。
    • カスタム2プロパティーの値を確認して、項目の用紙番号を見つけます。
    • 必要な数のプロモーション項目をウェアハウスから取得します。
    • 出荷担当者がジョブのカスタム1(注文番号)および カスタマー名プロパティーの値をチェックします。
    • 出荷部門でプロモーション項目を注文に追加します。

    ワークフローの次のステップにジョブを移行するため、担当者が手動完了アクションを実行します。

  • 注文処理が完了するまで、プロモーション項目の各ジョブを保留します。

注文に含まれる印刷品目とプロモーション品目のすべてのジョブがWaitForRelatedJobsステップに達すると、注文処理が完了します。RICOH ProcessDirectorにより、当該注文の親ジョブと当該品目のすべての子ジョブは、 RetainCompletedJobsステップテンプレートに基づくステップに移動します。