Show Menu
THEMEN×

Forms JEE-Workflows| Verarbeiten von Benutzerdaten

AEM Forms JEE Workflows Werkzeuge zum Entwerfen, Erstellen und Verwalten von Geschäftsprozessen bereitstellen. Ein Workflow-Prozess besteht aus einer Reihe von Schritten, die in einer bestimmten Reihenfolge ausgeführt werden. Bei jedem Schritt wird eine bestimmte Aktivität ausgeführt, z. B. einem Benutzer eine Aufgabe zuweisen oder eine E-Mail verschicken. Ein Prozess kann mit Assets, Benutzerkonten und Diensten interagieren und mit einer der folgenden Methoden ausgelöst werden:
  • Starten eines Prozesses von AEM Forms Workspace aus
  • Verwenden des SOAP- oder RESTful-Service
  • Senden eines adaptiven Formulars
  • Verwenden eines überwachten Ordners
  • E-Mail verwenden
For more information about creating AEM Forms JEE workflow process, see Workbench Help .

Benutzerdaten und Datenspeicher

Wenn ein Prozess ausgelöst wird und fortschreitet, erfasst er Daten zu den Prozessteilnehmern, Daten, die von Teilnehmern in dem mit dem Prozess verknüpften Formular eingegeben wurden, und Anhänge, die dem Formular hinzugefügt wurden. Die Daten werden in der AEM Forms JEE-Serverdatenbank gespeichert. Wenn sie konfiguriert sind, werden einige Daten wie Anlagen im Ordner des globalen Dokumentenspeichers (Global Document Storage, GDS) gespeichert. Der Ordner des globalen Dokumentenspeichers kann auf ein freigegebenes Dateisystem oder auf eine Datenbank konfiguriert werden.

Zugreifen auf und Löschen von Benutzerdaten

Wenn ein Prozess ausgelöst wird, werden eine eindeutige Prozessinstanz-ID und eine langlebige Aufrufkennung generiert und der Prozessinstanz zugeordnet. Sie können auf Daten für eine Prozessinstanz basierend auf der Aufruf-ID mit langer Lebensdauer zugreifen und diese löschen. Sie können die langlebige Aufrufkennung einer Prozessinstanz mit dem Benutzernamen des Prozessinitiators oder der Prozessteilnehmer, die ihre Aufgaben übermittelt haben, definieren.
Sie können die Prozessinstanz-ID für einen Initiator in den folgenden Szenarien jedoch nicht identifizieren:
  • Prozess, die durch einen überwachten Ordner ausgelöst wurden : Eine Prozessinstanz kann nicht über ihren Initiator identifiziert werden, wenn der Prozess von einem überwachten Ordner ausgelöst wird. In diesem Fall werden die Benutzerinformationen in den gespeicherten Daten codiert.
  • Von der AEM-Instanz veröffentlichter Prozess : Alle Prozessinstanzen, die von der AEM-Veröffentlichungsinstanz ausgelöst wurden, erfassen keine Informationen zum Initiator. Benutzerdaten können jedoch in dem Formular, das mit dem Prozess verknüpft ist, der in den Workflow-Variablen gespeichert ist, erfasst werden.
  • Durch E-Mail initiierter Prozess : Die E-Mail-ID des Absenders wird als Eigenschaft in einer undurchsichtigen Blockspalte der tb_job_instance Datenbanktabelle erfasst, die nicht direkt abgefragt werden kann.

Identifizieren Sie Prozessinstanz-IDs, wenn der Workflow-Initiator oder -Teilnehmer bekannt ist

Führen Sie die folgenden Schritte durch, um Prozessinstanz-IDs für einen Workflow-Initiator oder einen Teilnehmer zu identifizieren:
  1. Execute the following command in AEM Forms server database to retrieve the principal ID for workflow initiator or participant from the edcprincipalentity database table.
    select id from edcprincipalentity where canonicalname='user_ID'
    
    
    The query returns the principal ID for the specified user_ID .
  2. ( Für Workflow-Initiator ) Führen Sie den folgenden Befehl aus, um alle Aufgaben abzurufen, die mit der Prinzipal-ID für den Initiator aus der Datenbanktabelle tb_task verknüpft sind.
    select * from tb_task where start_task = 1 and create_user_id= 'initiator_principal_id'
    
    
    The query returns tasks initiated by the specified initiator _ principal_id . Die Aufgaben sind von zwei Arten:
    • Abgeschlossene Aufgaben : Diese Aufgaben wurden gesendet und zeigen einen alphanumerischen Wert im process_instance_id Feld an. Notieren Sie alle Prozessinstanz-IDs für übermittelte Aufgaben und fahren Sie mit den Schritten fort.
    • Aufgaben eingeleitet, aber nicht abgeschlossen : Diese Aufgaben sind eingeleitet, aber noch nicht abgeschickt. The value in the process_instance_id field for these tasks is 0 (zero). Beachten Sie in diesem Fall die entsprechenden Aufgaben-IDs und siehe Arbeiten mit verwaisten Aufgaben .
  3. ( For workflow participants ) Execute the following command to retrieve process instance IDs associated with the principal ID of the process participant for the initiator from the tb_assignment database table.
    select distinct a.process_instance_id from tb_assignment a join tb_queue q on a.queue_id = q.id where q.workflow_user_id='participant_principal_id'
    
    
    Die Abfrage gibt Instanz-IDs für alle Prozesse zurück, die mit dem Teilnehmer verknüpft sind, einschließlich derjenigen, bei denen der Teilnehmer keine Aufgabe eingereicht hat.
    Notieren Sie alle Prozessinstanz-IDs für übermittelte Aufgaben und fahren Sie mit den Schritten fort.
    For orphan tasks or tasks where the process_instance_id is 0 (zero), take note of the corresponding task IDs and see Work with orphan tasks .
  4. Follow the instructions in Purge user data from workflow instances based on process instance IDs section to delete user data for identified process instance IDs.

Identifizieren Sie Prozessinstanz-IDs, wenn Benutzerdaten in primitiven Variablen gespeichert werden

Ein Workflow kann so gestaltet werden, dass die Benutzerdaten in einer Variablen erfasst werden, die als Blob in der Datenbank gespeichert wird. In solchen Fällen können Sie Benutzerdaten nur abfragen, wenn sie in einer der folgenden primitiven Variablen gespeichert sind:
  • Zeichenfolge : Enthält die Benutzer-ID direkt oder als Teilzeichenfolge und kann mit SQL abgefragt werden.
  • Nummerisch: Enthält direkt die Benutzer-ID.
  • XML : Enthält die Benutzer-ID als Teilzeichenfolge im Text, der als Textspalte in der Datenbank gespeichert ist und der wie Zeichenfolgen abgefragt werden kann.
Führen Sie die folgenden Schritte durch, um festzustellen, ob ein Workflow, der Daten in primitiven Variablen speichert, Daten für den Benutzer enthält:
  1. Führen Sie den folgenden Datenbankbefehl aus:
    select database_table from omd_object_type where name='pt_<app_name>/<workflow_name>'
    
    
    The query returns a table name in tb_<number> format for the specified application ( app_name ) and workflow ( workflow_name ).
    Der Wert der Eigenschaft name kann komplex sein, wenn der Workflow in Unterordnern innerhalb der Anwendung verschachtelt ist. Stellen Sie sicher, dass Sie den genauen vollständigen Pfad zum Workflow angeben, den Sie aus der Datenbanktabelle omd_object_type abrufen können.
  2. Review the tb_<number> table schema. Die Tabelle enthält Variablen, die Benutzerdaten für den angegebenen Workflow speichern. Die Variablen in der Tabelle entsprechen den Variablen im Workflow.
    Identifizieren und notieren Sie sich die Variable, die der Workflow-Variablen entspricht, die die Benutzer-ID enthält. Wenn die angegebene Variable vom Typ „primitive“ ist, können Sie eine Abfrage ausführen, um Workflow-Instanzen zu ermitteln, die einer Benutzer-ID zugeordnet sind.
  3. Führen Sie den folgenden Datenbankbefehl aus: In diesem Befehl ist user_var die Variable vom Typ „primitive“, die die Benutzer-ID enthält.
    select process_instance_id from <tb_name> where <user_var>=<user_ID>
    
    
    The query returns all process instance IDs associated with the specified user_ID .
  4. Follow the instructions in Purge user data from workflow instances based on process instance IDs section to delete user data for identified process instance IDs.

Purge user data from workflow instances based on process instance IDs (Bereinigen von Benutzerdaten von Workflow-Instanzen, basierend auf Prozessinstanz-IDs)

Nachdem Sie die Prozessinstanz-IDs identifiziert haben, die einem Benutzer zugeordnet sind, führen Sie folgende Schritte aus, um Benutzerdaten aus den jeweiligen Prozessinstanzen zu löschen.
  1. Execute the following command to retrieve long-lived invocation ID and status for a process instance from the tb_process_instance table.
    select long_lived_invocation_id, status from tb_process_instance where id='process_instance_id'
    
    
    The query returns the long-lived invocation ID and status for the specified process_instance_id .
  2. Create an instance of the public ProcessManager client ( com.adobe.idp.workflow.client.ProcessManager ) using a ServiceClientFactory instance with the correct connection settings.
    Weitere Informationen finden Sie in der Java API-Referenz unter Class ProcessManager .
  3. Überprüfen Sie den Status der Workflow-Instanz. Wenn der Status nicht 2 (COMPLETE) oder 4 (BEENDET) ist, beenden Sie die Instanz zunächst, indem Sie die folgende Methode aufrufen:
    ProcessManager.terminateProcess(<long_lived_invocation_id>) .
  4. Bereinigen Sie die Workflow-Instanz, indem Sie die folgende Methode aufrufen:
    ProcessManager.purgeProcessInstance(<long_lived_invocation_id>)
    Die Methode purgeProcessInstance löscht alle Daten für die angegebene Aufruf-ID vollständig aus der AEM Forms-Serverdatenbank und dem GDS, sofern konfiguriert.

Arbeiten mit verwaisten Aufgaben

Verwaiste Aufgaben sind Aufgaben, deren Containing-Prozess initiiert, aber noch nicht übergeben wurde. in this case, the process_instance_id is 0 (zero). Daher können Sie Benutzerdaten, die für verwaiste Aufgaben gespeichert wurden, nicht mithilfe von Prozessinstanz-IDs verfolgen. Sie können sie jedoch mithilfe der Aufgaben-ID für eine verwaiste Aufgabe verfolgen. Sie können die Aufgaben-IDs für einen Benutzer aus der tb_task ermitteln, wie in Prozessinstanz-IDs identifizieren, wenn der Workflow-Initiator oder -Teilnehmer bekannt ist .
Sobald Sie die Aufgaben-IDs haben, führen Sie die folgenden Schritte aus, um die verknüpften Dateien und Daten mit einer verwaisten Aufgabe aus dem GDS und der Datenbank zu löschen.
  1. Führen Sie den folgenden Befehl in der AEM Forms-Serverdatenbank aus, um IDs für die identifizierten Aufgaben-IDs abzurufen.
    select id from tb_form_data where task_id=<task_id>
    
    
    Die Abfrage gibt eine Liste von IDs zurück. Erstellen Sie für jede ID ( fd_id ), die in den Ergebnissen zurückgegeben wird, eine Liste der Sitzungs-ID-Zeichenfolgen wie folgt:
    • _ wfattach<task_id>
    • _wftask<fd_id>
    • _wftaskformid<fd_id>
  2. Abhängig davon, ob Ihr GDS auf ein Dateisystem oder eine Datenbank verweist, führen Sie einen der folgenden Schritte aus:
    1. GDS im Dateisystem
      Im GDS-Dateisystem:
      1. Suchen Sie nach Dateien mit den folgenden Sitzungs-ID-Zeichenfolgen als ihre Erweiterungen:
      • _wfattach<task_id>
      • _wftask<fd_id>
      • _wftaskformid<fd_id>
        Die Dateien mit diesen Erweiterungen sind die Markierungsdateien. Sie werden mit Dateinamen im folgenden Format gespeichert:
        <file_name_guid>.session<session_id_string>
      1. Delete all marker files and other files with the exact filename as <file_name_guid> from the file system.
    2. GDS in der Datenbank
      Führen Sie den folgenden Befehle für jede Sitzungs-ID aus:
      delete from tb_dm_chunk where documentid in (select documentid from tb_dm_session_reference where sessionid=<session_id>)
      delete from tb_dm_session_reference where sessionid=<session_id>
      delete from tb_dm_deletion where sessionid=<session_id>
      
      
  3. Führen Sie die folgenden Befehle aus, um Daten für Aufgaben-IDs aus der AEM Forms-Serverdatenbank zu löschen:
    delete from tb_task_acl where task_id=<task_id>
    delete from tb_task_attachment where task_id=<task_id>
    delete from tb_form_data where task_id=<task_id>
    delete from tb_assignment where task_id=<task_id>
    delete from tb_task where id=<task_id>