Einsatzszenario für das Verarbeiten von Aufträgen in einer XML-Datei

In diesem Szenario möchte eine Druckerei Aufträge in XML-Dateien verarbeiten, die sie von Web-to-Print-Verkäufern erhalten hat. Jede XML-Datei enthält mehrere Aufträge, und jeder Auftrag kann sowohl Drucksachen als auch Werbegeschenke wie z. B. Kaffeetassen und Baseballkappen umfassen.

In diesem Szenario verwendet der RICOH ProcessDirector-Administrator ein Drittanbieter-Tool (z. B. Altova MapForce) zum Erstellen von XSLT-Stylesheets (Extensible Stylesheet Language Transformations). Beispiele für XML-Eingabedateien, XPath-Ausdrücke XSLT-Stylesheets und RICOH ProcessDirector-Überschreibungsdateien finden Sie im entsprechenden Referenzthema.

Überprüfung und Vorbereitung der Verarbeitung der XML

Der RICOH ProcessDirector-Administrator überprüft den Inhalt der XML-Dateien und entscheidet, wie sie zu verarbeiten sind.

  1. Der Administrator identifiziert zunächst die XML-Elemente, die Werte für RICOH ProcessDirector-Jobmerkmale liefern.

    In der Beispiel XML-Eingabedatei liefern zwei XML-Elemente Informationen, die erforderlich sind, um jedes Element in einem Auftrag zu verfolgen. Das Attribut number des Elements order und das Element customername liefern die Auftragsnummer bzw. den Namen des Kunden.

    Bei Druckelementen liefert das Element printfile die URL der herunterzuladenden und auszudruckenden PDF-Datei.

    Bei Werbeelementen liefert das Attribut number des Elements stock den Speicherort des Objekts im Lager.

    Zu allen Elementen liefert das Element quantity die bestellte Menge.

    Diese Tabelle zeigt diese fünf XML-Elemente und die Namen der entsprechenden RICOH ProcessDirector-Jobmerkmale.

    XML-Element Datenbankname des Jobmerkmals Benutzerschnittstellenname des Jobmerkmals
    <order number> Job.Info.Attr1 Benutzerdefiniert 1
    <customername> Job.CustomerName Kundenname
    <printfile> Job.DownloadFile URL der herunterzuladenden Datei
    <stock number> Job.Info.Attr2 Benutzerdefiniert 2
    <quantity> Job.Copies Angeforderte Jobkopien

  2. Der Administrator unterteilt die Verarbeitung in fünf Teile:
    • Erstellen eines separaten XML-Jobs für jeden Auftrag.
    • Zuweisen der Auftragswerte (order number und customername) zu Jobmerkmalen.
    • Erstellen eines separaten XML-Jobs für jedes Element – für jeden Auftrag.
    • Zuweisen der Elementwerte (printfile, stock number und quantity) zu Jobmerkmalen.
    • Verarbeiten der Druck- und Lagerelemente in separaten Workflows.
  3. Der Administrator entscheidet sich dafür, vier Workflows zu definieren:
    • Der ExtractOrdersFromXML-Workflow empfängt Aufträge und erstellt separate Jobs für jeden Auftrag.
    • Der SplitOrderIntoPrintAndStockJobs-Workflow trennt die Elemente in jedem Auftrag in Druck- und Lagerelemente.
    • Der ProcessPrintJobs-Workflow verarbeitet Druckjobs.
    • Der ProcessStockJobs-Workflow verarbeitet Lagerjobs.

    Ein auf der CreateJobsFromXML-Schrittschablone basierender Schritt erstellt Jobs aus Elementen in einer XML-Datei, die mit einem XPath-Ausdruck übereinstimmen. Der Schritt übermittelt die Jobs an einen Workflow.

  4. Der Administrator entscheidet sich dafür, drei CreateJobsFromXML-Schritte zu verwenden, jeweils mit einem anderen XPath-Ausdruck (XML Path Language).
    • Der erste Schritt erstellt einen separaten XML-Job für jeden Auftrag.

      Der Auftragsjobs-Ausdruck gibt die XML-Elemente an, die Aufträgen entsprechen /seller/order

    • Im zweiten Schritt wird ein separater XML-Job für jedes Druckelement erstellt.

      Der Druckjob-Ausdruck gibt die XML-Elemente an, die Druckelementen entsprechen: /order/item/printfile/ancestor::item

    • Im dritten Schritt wird ein separater XML-Job für jedes Werbeelement erstellt.

      Der Lagerjobs-Ausdruck gibt die XML-Elemente an, die Werbeelementen entsprechen: /order/item/stock/ancestor::item

    Der Administrator weist die CreateJobsFromXML-Schritte Workflows zu:

    • Der erste Schritt gehört in den ExtractOrdersFromXML-Workflow. Der Schritt übergibt die XML-Jobs für jeden Auftrag an den SplitOrderIntoPrintAndStockJobs-Workflow.
    • Der zweite und dritte Schritt gehören in den SplitOrderIntoPrintAndStockJobs-Workflow. Der zweite Schritt übergibt XML-Jobs für Druckelemente an den ProcessPrintJobs-Workflow. Der dritte Schritt übergibt XML-Jobs für Werbeelemente an den den ProcessStockJobs-Workflow.

    Ein auf der ApplyXSLTransform-Schrittschablone basierender Schritt kann XML in eine RICOH ProcessDirector-Überschreibungsdatei umwandeln, die die Werte von Jobmerkmalen festlegt.

  5. Der Administrator entscheidet sich dafür, drei ApplyXSLTransform-Schritte zu verwenden. Jeder Schritt verwendet ein XSLT-Stylesheet. Der Administrator verwendet ein XSLT-Tool eines Drittanbieters zum Erstellen der XSLT-Stylesheets.
    • Der erste Schritt verwendet das Auftragsjobs-XSLT-Stylesheet. Dieser Schritt wandelt das Attribut name des Elements order und des Elements customername in die Jobmerkmale Job.Info.Attr1 bzw. Job.CustomerName um.

      Dieser Schritt gehört in den SplitOrderIntoPrintAndStockJobs-Workflow vor die beiden CreateJobsFromXML-Schritte.

    • Der zweite Schritt verwendet das Druckjobs-XSLT-Stylesheet. Dieser Schritt wandelt das Element printfile und das Element quantity in die Jobmerkmale Job.DownloadFile bzw. Job.Copies um.

      Der Schritt gehört in den ProcessPrintJobs-Workflow.

    • Der dritte Schritt verwendet das Lagerjobs-XSLT-Stylesheet. Dieser Schritt wandelt das Attribut number des Elements stock und des Elements quantity in die Jobmerkmale Job.Info.Attr2 und Job.Copies um.

      Der Schritt gehört in den ProcessStockJobs-Workflow.

  6. Der Administrator entscheidet sich, einen DownloadFile-Schritt zu verwenden, um PDF-Dateien von einer angegebenen URL herunterzuladen.

    Da die Druckerei einen Proxyserver zur Kommunikation mit externen Websites verwendet, richtet der Administrator RICOH ProcessDirector ein, um den Proxyserver zu verwenden.

Eingabeeinheit und Workflows einrichten

Der Administrator richtet eine Eingabeeinheit vom Typ "Ordner für Sofortdruck" ein, um XML-Dateien zu empfangen, und vier Workflows, um sie zu verarbeiten.

  1. Der ExtractOrdersFromXML-Workflow erstellt einen Job für jeden Auftrag in der XML-Eingabedatei.

    Nach den Schritten SetJobPropsFromTextFile und DetectInputDataStream fügt der Administrator den CreateJobsFromXML-Schritt hinzu. Der Administrator setzt den Wert des XPath-Ausdrucks auf /seller/order und den Wert des Workflows für neue Jobs auf SplitOrderIntoPrintAndStockJobs. Der Administrator gibt an, dass neue Aufträge nicht als untergeordnete Jobs erstellt werden. Jeder Auftrag ist ein unabhängiger Job.

  2. Der SplitOrderIntoPrintAndStockJobs-Workflow empfängt jeden Auftragsjob, erstellt XML-Dateien für Druck- und Werbeelemente und übergibt sie als untergeordnete Jobs an den entsprechenden Workflow.

    Nach den Schritten SetJobPropsFromTextFile und DetectInputDataStream fügt der Administrator einen ApplyXSLTransform-Schritt hinzu. Der Schritt verwendet das Auftragsjobs-XSLT-Stylesheet.

    Nach dem ApplyXSLTransform-Schritt fügt der Administrator zwei CreateJobsFromXML-Schritte hinzu.

    • Für den ersten Schritt setzt der Administrator den Wert des XPath-Ausdrucks auf /order/item/printfile/ancestor::item und den Wert des Workflows für neue Jobs auf ProcessPrintJobs.
    • Für den zweiten Schritt setzt der Administrator den Wert des XPath-Ausdrucks auf /order/item/stock/ancestor::item und den Wert des Workflows für neue Jobs auf ProcessStockJobs.
    • Der Administrator gibt für beide Schritte an, dass neue Aufträge als untergeordnete Jobs erstellt werden. Der Administrator gibt außerdem an, dass die übergeordneten Jobs mit dem nächsten Schritt fortfahren, wenn keine untergeordneten Jobs erstellt werden. Beispielsweise werden untergeordnete Jobs im ersten CreateJobsFromXML-Schritt nicht erstellt, wenn ein Auftragsjob keine Druckelemente aufweist.

    Nach dem zweiten CreateJobsFromXML-Schritt fügt der Administrator einen auf der WaitForRelatedJobs-Schrittschablone basierenden Schritt hinzu. Dieser Schritt hält die übergeordneten Jobs zurück, bis alle untergeordneten Jobs für Druck- und Werbeelemente verarbeitet wurden.

  3. Der ProcessPrintJobs-Workflow empfängt jeden Job für ein Druckelement und druckt die Elemente.

    Nach den Schritten SetJobPropsFromTextFile und DetectInputDataStream fügt der Administrator einen ApplyXSLTransform-Schritt hinzu. Der Schritt verwendet das Druckjobs-XSLT-Stylesheet.

    Nach dem ApplyXSLTransform-Schritt fügt der Administrator einen Schritt hinzu, der auf der DownloadFile-Schrittschablone basiert, um die PDF-Datei herunterzuladen, die durch den Wert des Job.DownloadFile-Merkmals festgelegt ist. Der Administrator setzt den Wert des Merkmals Pfad zur heruntergeladenen Datei auf ${getFileName(print,pdf,write)}, sodass die PDF-Datei im Spoolverzeichnis für den Job heruntergeladen wird.

    Im Anschluss an den DownloadFile-Schritt fügt der Administrator die Schritte hinzu, die die Druckerei zur Verarbeitung der PDF-Jobs verwendet.

    Nach dem letzten Schritt, der die Druckjobs verarbeitet, fügt der Administrator einen Schritt hinzu, der auf der ManualStepWithAutoStart-Schrittschablone basiert. Der Schritt gibt einem Expedienten Zeit, den Druckjob zum Auftrag in der Versandabteilung hinzuzufügen.

    Nach dem zweiten ManualStepWithAutoStart-Schritt fügt der Administrator einen auf der WaitForRelatedJobs-Schrittschablone basierenden Schritt hinzu. Dieser Schritt hält die einzelnen Jobs für ein Druckelement zurück, bis alle Jobs im Auftrag verarbeitet wurden.

  4. Der ProcessStockJobs-Workflow empfängt jeden Job für ein Werbeelement und berücksichtigt die Zeit, die benötigt wird, um ein Werbeelement aus dem Lager zu holen.

    Nach den Schritten SetJobPropsFromTextFile und DetectInputDataStream fügt der Administrator einen ApplyXSLTransform-Schritt hinzu. Der Schritt verwendet das Lagerjobs-XSLT-Stylesheet.

    Nach dem zweiten ApplyXSLTransform-Schritt fügt der Administrator einen auf der ManualStepWithAutoStart-Schrittschablone basierenden Schritt hinzu. Der Schritt gibt einem Expedienten Zeit, den Werbeartikel aus dem Lager zu holen und zum Auftrag in der Versandabteilung hinzuzufügen.

    Nach dem zweiten ManualStepWithAutoStart-Schritt fügt der Administrator einen auf der WaitForRelatedJobs-Schrittschablone basierenden Schritt hinzu. Dieser Schritt hält die einzelnen Jobs für einen Werbeartikel zurück, bis alle Jobs im Auftrag verarbeitet wurden.

Diese Abbildung zeigt die vier Workflows. Die grünen Linien zeigen dem Workflow, dass jeder CreateJobsFromXML-Schritt XML-Jobs übergibt.

Jobs über die Workflows verarbeiten

Wenn der Administrator die Workflows aktiviert und eine XML-Datei an die Eingabeeinheit übergibt, verarbeitet RICOH ProcessDirector den Job über die vier Workflows.

Der ExtractOrdersFromXML-Workflow empfängt den XML-Job von der Eingabeeinheit und erstellt eine XML-Datei für jedes einzelne Element order, das mit dem Auftragsjobs-XPath-Ausdruck übereinstimmt. Der Workflow übergibt jede XML-Datei als einen Job an den SplitOrderIntoPrintAndStockJobs-Workflow.

Der SplitOrderIntoPrintAndStockJobs-Workflow führt die Verarbeitung wie folgt durch:

  • Er empfängt die einzelnen Auftragsjobs.
  • Der Workflow wandelt mithilfe des XSLT-Stylesheets "Auftragsjobs" die Elemente und Werte order number und customername in Jobmerkmale und Jobwerte um.
  • Er protokolliert die Jobmerkmale und Werte in einer Überschreibungsdatei.
  • Der Workflow erstellt eine XML-Datei für jedes Element item, das mit dem Ausdruck "Druckjobs-XPath" übereinstimmt. Der Workflow übergibt jede XML-Datei als einen untergeordneten Job an den ProcessPrintJobs-Workflow. Eine Kopie der Überschreibungsdatei wird mit jedem untergeordneten Job übergeben.

    Der Workflow erstellt eine XML-Datei für jedes Element item, das mit dem Ausdruck "Lagerjobs-XPath" übereinstimmt. Der Workflow übergibt jede XML-Datei als einen untergeordneten Job an den ProcessStockJobs-Workflow. Eine Kopie der Überschreibungsdatei wird mit jedem untergeordneten Job übergeben.

  • Er hält den übergeordneten Job für jeden Auftrag zurück, bis alle untergeordneten Jobs verarbeitet wurden.

Der ProcessPrintJobs-Workflow führt die Verarbeitung wie folgt durch:

  • Er empfängt die einzelnen Jobs für ein Druckelement.
  • Der Workflow wandelt mithilfe des XSLT-Stylesheets "Druckjobs" die Elemente und Werte printfile und quantity in Jobmerkmale und Jobwerte um.
  • Er zeichnet die Jobmerkmale und -werte durch Überschreiben der Inhalte der mit dem Job übergebenen Überschreibungsdatei auf.
  • Er verwendet den Wert des Job.DownloadFile-Merkmals, um die PDF-Datei für jedes Druckelement herunterzuladen.
  • Er druckt die PDF-Datei.
  • Er wartet, solange ein Expedient die Werte die Merkmale Benutzerdefiniert 1 (Auftragsnummer) und Kundennamefür den Job überprüft. Der Expedient fügt dann das Druckelement zum Auftrag in der Versandabteilung hinzu.

    Um den Job in den nächsten Schritt im Workflow zu versetzen, verwendet der Expedient die Aktion Manuell abschließen.

  • Sie hält jeden Job für ein Druckelement zurück, bis die Verarbeitung des Auftrags abgeschlossen ist.

Der ProcessStockJobs-Workflow führt die Verarbeitung wie folgt durch:

  • Er empfängt die einzelnen Jobs für ein Werbeelement.
  • Der Workflow wandelt mithilfe des XSLT-Stylesheets "Lagerjobs" die Elemente und Werte stock number und quantity in Jobmerkmale und Jobwerte um.
  • Er zeichnet die Jobmerkmale und -werte durch Überschreiben der Inhalte der mit dem Job übergebenen Überschreibungsdatei auf.
  • Er wartet, während ein Expedient folgende Aufgaben ausführt:
    • Finden der Lagernummer des Elements durch Überprüfen des Wertes des Benutzerdefiniert 2-Merkmals.
    • Holen der erforderlichen Anzahl von Werbeelementen aus dem Lager.
    • Überprüfen der Werte der Merkmale Benutzerdefiniert 1 (Auftragsnummer) und Kundenname für den Job.
    • Hinzufügen der Werbeelemente zum Auftrag in der Versandabteilung.

    Um den Job in den nächsten Schritt im Workflow zu versetzen, verwendet der Expedient die Aktion Manuell abschließen.

  • Sie hält jeden Job für ein Werbeelement zurück, bis die Verarbeitung des Auftrags abgeschlossen ist.

Wenn alle Jobs für die Druck- und Werbeelemente in einem Auftrag den Schritt WaitForRelatedJobs erreicht haben, ist die Auftragsverarbeitung abgeschlossen. RICOH ProcessDirector versetzt den übergeordneten Job für den Auftrag und alle untergeordneten Jobs für die Elemente in die Schritte, die auf der Schrittschablone RetainCompletedJobs basieren.