Flussi di lavoro JEE Forms | Gestione dei dati utente

I flussi di lavoro JEE di AEM Forms forniscono strumenti per la progettazione, la creazione e la gestione dei processi aziendali. Un processo di flusso di lavoro consiste in una serie di passaggi che vengono eseguiti in un ordine specificato. Ogni passaggio esegue un’azione specifica, ad esempio l’assegnazione di un’attività a un utente o l’invio di un messaggio e-mail. Un processo può interagire con risorse, account utente e servizi e può essere attivato utilizzando uno dei seguenti metodi:

  • Avvio di un processo da AEM Forms Workspace
  • Utilizzo del servizio SOAP o RESTful
  • Invio di un modulo adattivo
  • Utilizzo della cartella controllata
  • Utilizzo di e-mail

Per ulteriori informazioni sulla creazione del processo del flusso di lavoro JEE per AEM Forms, vedi Guida di Workbench.

Archiviazione dati e dati utente

Quando un processo viene attivato e procede, acquisisce i dati relativi ai partecipanti al processo, i dati immessi dai partecipanti al modulo associato al processo e gli allegati aggiunti al modulo. I dati vengono memorizzati nel database del server JEE di AEM Forms e, se configurati, alcuni dati come gli allegati vengono memorizzati nella directory Global Document Storage (GDS). La directory GDS può essere configurata su un file system condiviso o su un database.

Accedere ed eliminare i dati utente

Quando un processo viene attivato, viene generato un ID univoco dell'istanza del processo e viene generato un ID di chiamata di lunga durata, che viene associato all'istanza del processo. Puoi accedere ed eliminare i dati per un'istanza di processo in base all'ID di chiamata di lunga durata. Puoi dedurre l’ID di chiamata di lunga durata di un’istanza di processo con il nome utente dell’iniziatore del processo o dei partecipanti al processo che hanno inviato le loro attività.

Tuttavia, non è possibile identificare l'ID dell'istanza di processo per un iniziatore nei seguenti scenari:

  • Processo attivato tramite una cartella controllata: Impossibile identificare un'istanza di processo utilizzando il proprio iniziatore se il processo viene attivato da una cartella controllata. In questo caso, le informazioni utente vengono codificate nei dati memorizzati.
  • Processo avviato dall'istanza di pubblicazione AEM: Tutte le istanze di processo attivate da AEM'istanza di pubblicazione non acquisiscono informazioni sull'iniziatore. Tuttavia, i dati utente possono essere acquisiti nel modulo associato al processo, memorizzato nelle variabili del flusso di lavoro.
  • Processo avviato tramite e-mail: L’ID e-mail del mittente viene acquisito come proprietà in una colonna BLOB opaca del tb_job_instance tabella di database, che non può essere interrogata direttamente.

Identificare gli ID delle istanze del processo quando l’iniziatore del flusso di lavoro o il partecipante è noto

Esegui i seguenti passaggi per identificare gli ID delle istanze del processo per un iniziatore di flusso di lavoro o un partecipante:

  1. Esegui il seguente comando nel database del server AEM Forms per recuperare l’ID principale per l’iniziatore del flusso di lavoro o il partecipante dal edcprincipalentity tabella del database.

    select id from edcprincipalentity where canonicalname='user_ID'
    

    La query restituisce l'ID principale per il user_ID.

  2. (Per l’iniziatore del flusso di lavoro) Esegui il comando seguente per recuperare tutte le attività associate all'ID principale per l'iniziatore dal tb_task tabella del database.

    select * from tb_task where start_task = 1 and create_user_id= 'initiator_principal_id'
    

    La query restituisce i task avviati dal initiator_ principal_id. Le attività sono di due tipi:

    • Attività completate: Queste attività sono state inviate e presentano un valore alfanumerico nel process_instance_id campo . Prendi nota di tutti gli ID delle istanze del processo per le attività inviate e continua con i passaggi.
    • Attività avviate ma non completate: Questi compiti sono iniziati ma non ancora inviati. Il valore nel process_instance_id il campo di queste attività è 0 (zero). In questo caso, prendi nota degli ID attività corrispondenti e vedi Operazioni con le attività orfane.
  3. (Per i partecipanti al flusso di lavoro) Esegui il comando seguente per recuperare gli ID dell'istanza del processo associati all'ID principale del partecipante al processo per l'iniziatore dal tb_assignment tabella del database.

    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'
    

    La query restituisce gli ID istanza per tutti i processi associati al partecipante, compresi quelli in cui il partecipante non ha inviato alcuna attività.

    Prendi nota di tutti gli ID delle istanze del processo per le attività inviate e continua con i passaggi.

    Per le attività o i compiti orfani in cui process_instance_id è 0 (zero), prendi nota degli ID attività corrispondenti e vedi Operazioni con le attività orfane.

  4. Segui le istruzioni in Elimina i dati utente dalle istanze del flusso di lavoro in base agli ID delle istanze del processo per eliminare i dati utente per gli ID di istanze del processo identificati.

Identificare gli ID delle istanze del processo quando i dati utente vengono memorizzati in variabili primitive

Un flusso di lavoro può essere progettato in modo tale che i dati utente vengano acquisiti in una variabile che viene memorizzata come BLOB nel database. In questi casi, puoi eseguire query sui dati utente solo se sono memorizzati in una delle seguenti variabili di tipo primitivo:

  • Stringa: Contiene l'ID utente direttamente o come sottostringa e può essere interrogato utilizzando SQL.
  • Numerico: Contiene direttamente l’ID utente.
  • XML: Contiene l’ID utente come sottostringa all’interno del testo memorizzato come colonne di testo nel database e può essere interrogato come stringhe.

Esegui i seguenti passaggi per determinare se un flusso di lavoro che memorizza dati in variabili di tipo primitivo contiene dati per l’utente:

  1. Esegui il seguente comando del database:

    select database_table from omd_object_type where name='pt_<app_name>/<workflow_name>'
    

    La query restituisce un nome di tabella in tb_<number> formato per l'applicazione specificata ( app_name) e flusso di lavoro ( workflow_name).

    NOTA

    Il valore del name può essere complessa se il flusso di lavoro è nidificato all’interno di sottocartelle all’interno dell’applicazione. Assicurati di specificare l’esatto percorso completo del flusso di lavoro, che puoi ottenere dal omd_object_type tabella del database.

  2. Consulta la sezione tb_<number> schema tabella. La tabella contiene variabili che memorizzano i dati utente per il flusso di lavoro specificato. Le variabili nella tabella corrispondono alle variabili nel flusso di lavoro.

    Identifica e prendi nota della variabile che corrisponde alla variabile del flusso di lavoro contenente l’ID utente. Se la variabile identificata è di tipo primitivo, puoi eseguire una query per determinare le istanze del flusso di lavoro associate a un ID utente.

  3. Esegui il seguente comando del database. In questo comando, la user_var è la variabile di tipo primitivo che contiene l’ID utente.

    select process_instance_id from <tb_name> where <user_var>=<user_ID>
    

    La query restituisce tutti gli ID di istanza del processo associati al user_ID.

  4. Segui le istruzioni in Elimina i dati utente dalle istanze del flusso di lavoro in base agli ID delle istanze del processo per eliminare i dati utente per gli ID di istanze del processo identificati.

Elimina i dati utente dalle istanze del flusso di lavoro in base agli ID delle istanze del processo

Dopo aver identificato gli ID di istanza del processo associati a un utente, procedi come segue per eliminare i dati utente dalle rispettive istanze del processo.

  1. Esegui il seguente comando per recuperare l'ID e lo stato di chiamata a lunga durata per un'istanza di processo dal tb_process_instance tabella.

    select long_lived_invocation_id, status from tb_process_instance where id='process_instance_id'
    

    La query restituisce l'ID e lo stato di chiamata a lunga durata per il valore specificato process_instance_id.

  2. Crea un'istanza del pubblico ProcessManager client ( com.adobe.idp.workflow.client.ProcessManager) utilizzando un ServiceClientFactory istanza con le impostazioni di connessione corrette.

    Per ulteriori informazioni, consulta Riferimento API Java per Classe ProcessManager.

  3. Controlla lo stato dell’istanza del flusso di lavoro. Se lo stato è diverso da 2 (COMPLETE) o 4 (TERMINATED), interrompi prima l'istanza chiamando il seguente metodo:

    ProcessManager.terminateProcess(<long_lived_invocation_id>).

  4. Elimina l’istanza del flusso di lavoro chiamando il seguente metodo:

    ProcessManager.purgeProcessInstance(<long_lived_invocation_id>)

    La purgeProcessInstance elimina completamente tutti i dati per l'ID di chiamata specificato dal database del server AEM Forms e da GDS, se configurato.

Operazioni con le attività orfane

Le attività orfane sono le attività il cui processo di contenimento è stato avviato ma non ancora inviato. in questo caso, process_instance_id è 0 (zero). Pertanto, non è possibile tracciare i dati utente archiviati per le attività orfane utilizzando gli ID delle istanze del processo. Tuttavia, è possibile tracciarlo utilizzando l'ID attività per un'attività orfana. Puoi identificare gli ID delle attività dalla tb_task tabella per un utente come descritto in Identificare gli ID delle istanze del processo quando l’iniziatore del flusso di lavoro o il partecipante è noto.

Una volta ottenuti gli ID attività, procedi come segue per eliminare i file e i dati associati con un’attività orfana da GDS e dal database.

  1. Esegui il seguente comando sul database del server AEM Forms per recuperare gli ID per gli ID attività identificati.

    select id from tb_form_data where task_id=<task_id>
    

    La query restituisce un elenco di ID. Per ogni ID ( fd_id) restituita nei risultati, crea un elenco di stringhe ID sessione come segue:

    • _ wfattach<task_id>
    • _wftask<fd_id>
    • _wftaskformid<fd_id>
  2. A seconda che il GDS punti a un file system o a un database, effettua una delle seguenti operazioni:

    1. GDS nel file system

      Nel file system GDS:

      1. Cerca i file con le seguenti stringhe ID sessione come estensioni:
      • _wfattach<task_id>
      • _wftask<fd_id>
      • _wftaskformid<fd_id>

      I file con queste estensioni sono i file marker. Vengono memorizzati con nomi file nel seguente formato:

      <file_name_guid>.session<session_id_string>

      1. Elimina tutti i file marker e altri file con il nome file esatto come <file_name_guid> dal file system.
    2. GDS nel database

      Esegui i seguenti comandi per ogni ID sessione:

      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. Esegui i seguenti comandi per eliminare i dati per gli ID attività dal database del server AEM Forms:

    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>
    

In questa pagina