Show Menu
ARGOMENTI×

Flussi di lavoro JEE Forms| Gestione dei dati utente

I flussi di lavoro AEM Forms JEE forniscono strumenti per progettare, creare e gestire i processi aziendali. Un processo di workflow consiste in una serie di passaggi 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 esaminata
  • Utilizzo di e-mail
Per ulteriori informazioni sulla creazione del processo di flusso di lavoro AEM Forms JEE, consultate la Guida di Workbench.

Archivio dati utente e data

Quando un processo viene avviato e in corso, acquisisce i dati sui partecipanti al processo, i dati immessi dai partecipanti nel modulo associato al processo e gli allegati aggiunti al modulo. I dati vengono memorizzati nel database del server AEM Forms JEE e, se configurato, 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.

Accesso ed eliminazione dei dati utente

Quando viene attivato un processo, un ID univoco dell’istanza di processo e un ID di chiamata longevo vengono generati e associati all’istanza di processo. Puoi accedere ed eliminare i dati per un’istanza di processo in base all’ID chiamata longevo. Potete determinare 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 proprie attività.
Tuttavia, non potete identificare l’ID dell’istanza di processo per un iniziatore nei seguenti scenari:
  • Processo avviato tramite una cartella controllata: Un'istanza di processo non può essere identificata utilizzando il relativo iniziatore se il processo viene avviato da una cartella esaminata. In questo caso, le informazioni utente sono codificate nei dati memorizzati.
  • Processo avviato dall’istanza AEM di pubblicazione: Tutte le istanze del processo attivate dall’istanza di pubblicazione AEM non acquisiscono informazioni sul 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 della tabella del tb_job_instance database, che non può essere interrogata direttamente.

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

Effettuate le seguenti operazioni per identificare gli ID dell’istanza di processo per un iniziatore di workflow o un partecipante:
  1. Eseguite il comando seguente nel database del server AEM Forms per recuperare l’ID principale per l’iniziatore di workflow o il partecipante dalla tabella del edcprincipalentity database.
    select id from edcprincipalentity where canonicalname='user_ID'
    
    
    La query restituisce l'ID principale per l'ID specificato user_ID .
  2. ( Per l'iniziatore del flusso di lavoro) Esegui il comando seguente per recuperare dalla tabella del tb_task database tutte le attività associate all'ID principale per l'iniziatore.
    select * from tb_task where start_task = 1 and create_user_id= 'initiator_principal_id'
    
    
    La query restituisce le attività iniziate dal initiator _ specificato principal_id . Le attività sono di due tipi:
    • Attività completate: Tali attività sono state inviate e presentano un valore alfanumerico nel process_instance_id campo. Prendi nota di tutti gli ID di istanza del processo per le attività inviate e continua con i passaggi.
    • Attività avviate ma non completate : Tali attività sono iniziate ma non ancora inviate. Il valore nel process_instance_id campo di queste attività è 0 (zero). In questo caso, prendere nota degli ID attività corrispondenti e vedere Operazioni con le attività orfane.
  3. ( Per i partecipanti al flusso di lavoro) Esegui il comando seguente per recuperare gli ID dell’istanza di processo associati all’ID principale del partecipante al processo per l’iniziatore dalla tabella del tb_assignment 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 di 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 di istanza del processo per le attività inviate e continua con i passaggi.
    Per le attività o le attività orfane in cui il valore process_instance_id è 0 (zero), prendere nota degli ID attività corrispondenti e vedere Operazioni con le attività orfane.
  4. Seguite le istruzioni riportate nella sezione Rimuovi i dati utente dalle istanze del flusso di lavoro in base agli ID dell'istanza del processo per eliminare i dati utente per gli ID di istanza del processo identificati.

Identificare gli ID dell’istanza del processo quando i dati dell’utente vengono memorizzati in variabili primitive

Un flusso di lavoro può essere progettato in modo che i dati utente vengano acquisiti in una variabile che viene memorizzata come BLOB nel database. In questi casi, potete eseguire una query sui dati utente solo se sono memorizzati in una delle seguenti variabili di tipo primitivo:
  • Stringa : Contiene l’ID utente direttamente o sotto forma di 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.
Per determinare se un flusso di lavoro che memorizza i dati in variabili di tipo primitivo contiene i dati per l’utente, procedere come segue:
  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 ( app_name ) e il flusso di lavoro ( workflow_name ) specificati.
    Il valore della name proprietà può essere complesso se il flusso di lavoro è nidificato all'interno di sottocartelle all'interno dell'applicazione. Accertatevi di specificare il percorso completo esatto del flusso di lavoro, che potete ottenere dalla tabella del omd_object_type database.
  2. Esaminare lo schema della tb_<number> tabella. La tabella contiene variabili che memorizzano i dati utente per il flusso di lavoro specificato. Le variabili della tabella corrispondono alle variabili del flusso di lavoro.
    Identificate e prendete nota della variabile corrispondente alla variabile del flusso di lavoro contenente l’ID utente. Se la variabile identificata è di tipo primitivo, potete 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 variabile user_var è di tipo primitivo e contiene l’ID utente.
    select process_instance_id from <tb_name> where <user_var>=<user_ID>
    
    
    La query restituisce tutti gli ID dell'istanza di processo associati all'istanza specificata user_ID .
  4. Seguite le istruzioni riportate nella sezione Rimuovi i dati utente dalle istanze del flusso di lavoro in base agli ID dell'istanza del processo per eliminare i dati utente per gli ID di istanza del processo identificati.

Rimozione dei dati utente dalle istanze del flusso di lavoro in base agli ID delle istanze del processo

Dopo aver identificato gli ID dell’istanza di processo associati a un utente, effettuate le seguenti operazioni per eliminare i dati utente dalle rispettive istanze di processo.
  1. Esegui il comando seguente per recuperare l’ID chiamata e lo stato di lunga durata per un’istanza di processo dalla tb_process_instance tabella.
    select long_lived_invocation_id, status from tb_process_instance where id='process_instance_id'
    
    
    La query restituisce l'ID chiamata longevo e lo stato per quello specificato process_instance_id .
  2. Create un'istanza del ProcessManager client pubblico ( com.adobe.idp.workflow.client.ProcessManager ) utilizzando un' ServiceClientFactory istanza con le impostazioni di connessione corrette.
    Per ulteriori informazioni, consultate Riferimento API Java per Class ProcessManager .
  3. Controllare lo stato dell'istanza del flusso di lavoro. Se lo stato è diverso da 2 (COMPLETE) o 4 (TERMINATED), terminare l’istanza chiamando il seguente metodo:
    ProcessManager.terminateProcess(<long_lived_invocation_id>) .
  4. Eliminate l’istanza del flusso di lavoro chiamando il seguente metodo:
    ProcessManager.purgeProcessInstance(<long_lived_invocation_id>)
    Il purgeProcessInstance metodo 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, il valore process_instance_id è 0 (zero). Pertanto, non è possibile tracciare i dati utente memorizzati per le attività orfane utilizzando gli ID di istanza del processo. Tuttavia, è possibile tracciarlo utilizzando l'ID attività per un'attività orfana. Potete identificare gli ID delle attività dalla tb_task tabella relativa a un utente come descritto in Identificare gli ID delle istanze del processo quando l’iniziatore del flusso di lavoro o il partecipante è noto .
Dopo aver ottenuto gli ID attività, effettuate le seguenti operazioni per eliminare i file e i dati associati con un'attività orfana da GDS e database.
  1. Per recuperare gli ID per gli ID attività identificati, eseguite il comando seguente nel database del server AEM Forms.
    select id from tb_form_data where task_id=<task_id>
    
    
    La query restituisce un elenco di ID. Per ciascun ID ( fd_id ) restituito nei risultati, crea un elenco di stringhe ID sessione come segue:
    • _ wfattach<task_id>
    • _wftask<fd_id>
    • _wftaskformid<fd_id>
  2. A seconda che GDS punti a un file system o a un database, eseguire una delle operazioni seguenti:
    1. GDS nel file system
      Nel file system GDS:
      1. Cercate 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 marcatore. Sono memorizzati con nomi file nel seguente formato:
      <file_name_guid>.session<session_id_string>
      1. Eliminate tutti i file marcatore e altri file con il nome file esatto come <file_name_guid> dal file system.
    2. GDS nel database
      Eseguite i comandi seguenti per ciascun 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. Per eliminare i dati per gli ID attività dal database del server AEM Forms, eseguite i seguenti comandi:
    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>