Guida di riferimento per i passaggi dei flussi di lavoro

I modelli di flusso di lavoro sono composti da una serie di passaggi di vari tipi. A seconda del tipo, questi passaggi possono essere configurati ed estesi con parametri e script per fornire la funzionalità e il controllo necessari.

NOTA

Questa sezione descrive i passaggi standard del flusso di lavoro.

Per i passaggi specifici del modulo consulta anche:

Proprietà passaggio

Ogni componente del passaggio dispone di una finestra di dialogo Proprietà passaggio che consente di definire e modificare le proprietà richieste.

Proprietà del passaggio - Scheda comune

Per la maggior parte dei componenti dei passaggi del flusso di lavoro è disponibile una combinazione delle seguenti proprietà, nella scheda Comune della finestra di dialogo delle proprietà:

  • Titolo

    Titolo del passaggio.

  • Descrizione

    Una descrizione del passaggio.

  • Stadio flusso di lavoro

    Un selettore a discesa per applicare un elemento Stage al passaggio.

  • Timeout

    Il periodo dopo il quale il passaggio verrà "interrotto".

    Puoi scegliere tra: Off, Immediato, 1h, 6h, 12h, 24h.

  • Gestore timeout

    Il gestore che controllerà il flusso di lavoro quando il passaggio scade; ad esempio:

    Auto Advancer

  • Avanzamento gestore

    Seleziona questa opzione per avanzare automaticamente il flusso di lavoro al passaggio successivo dopo l’esecuzione. Se non è selezionato, lo script di implementazione deve gestire l’avanzamento del flusso di lavoro.

Proprietà passaggio: scheda Utente/gruppo

Le seguenti proprietà sono disponibili per molti componenti dei passaggi del flusso di lavoro, nella scheda Utente/Gruppo della finestra di dialogo delle proprietà:

  • Notifica all'utente via e-mail

    • Puoi inviare una notifica ai partecipanti inviando loro un messaggio e-mail quando il flusso di lavoro raggiunge il passaggio .
    • Se attivato, un messaggio e-mail verrà inviato all'utente definito dalla proprietà Utente/Gruppo o a ciascun membro del gruppo, se è definito un gruppo.
  • Utente/Gruppo

    • Una casella di selezione a discesa consente di navigare e selezionare un utente o un gruppo.
    • Se assegni il passaggio a un utente specifico, solo questo utente può intervenire sul passaggio.
    • Se assegni il passaggio a un intero gruppo, quando il flusso di lavoro raggiunge questo passaggio tutti gli utenti del gruppo avranno l'azione nella Casella in entrata flusso di lavoro.
    • Per ulteriori informazioni, consulta Partecipazione ai flussi di lavoro .

Suddivisione E

Il AND Split crea una suddivisione nel flusso di lavoro, dopodiché entrambi i rami saranno attivi. Puoi aggiungere i passaggi del flusso di lavoro a ogni ramo in base alle tue esigenze. Questo passaggio ti consente di introdurre più percorsi di elaborazione nel flusso di lavoro. Ad esempio, puoi consentire che determinati passaggi di revisione si verifichino in parallelo, risparmiando tempo.

wf-26

AND Split - Configurazione

  • Modifica le proprietà AND Split :

    • Nome diviso: assegnare un nome a scopo esplicativo.
    • Selezionare il numero di rami richiesti; 2, 3, 4 o 5.
  • Aggiungi i passaggi del flusso di lavoro ai rami come necessario.

    wf-27

Passaggio contenitore

Un passaggio Container avvia un altro modello di flusso di lavoro che viene eseguito come flusso di lavoro secondario.

Questo Contenitore consente di riutilizzare i modelli di flusso di lavoro per implementare sequenze di passaggi comuni. Ad esempio, un modello di flusso di lavoro di traduzione può essere utilizzato in più flussi di lavoro di modifica.

wf-28

Passaggio contenitore - Configurazione

Per configurare il passaggio , modifica e utilizza le seguenti schede:

  • Comune

  • Contenitore

    • Flusso di lavoro secondario: Seleziona il flusso di lavoro da avviare.

Passaggio GoTo

Il Passaggio consente di specificare il passaggio successivo nel modello di flusso di lavoro da eseguire, in base al risultato di uno script ECMAScript:

  • true: Il passaggio specificato viene completato da Passaggio completato e il motore del flusso di lavoro esegue il passaggio specificato.

  • false: Il passaggio successivo da eseguire è determinato dalla logica di indirizzamento Passaggio completato e dalla logica di indirizzamento normale.

Il Passaggio consente di implementare strutture di indirizzamento avanzate nei modelli di flusso di lavoro. Ad esempio, per implementare un ciclo, è possibile definire il Passaggio di destinazione per eseguire un passaggio precedente nel flusso di lavoro, con lo script che valuta una condizione di ciclo.

Passaggio a : configurazione

Per configurare il passaggio , modifica e utilizza le seguenti schede:

  • Comune

  • Processo

    • Il passaggio da: Seleziona il passaggio da eseguire.
    • Percorso script: Percorso di ECMAScript che determina l'esecuzione del Passaggio.
    • Script: ECMAScript che determina se eseguire il Passaggio di destinazione.
ATTENZIONE

Specificare il percorso Script o Script. Non è possibile utilizzare entrambe le opzioni contemporaneamente. Se si specificano i valori per entrambe le proprietà, il passaggio utilizza il percorso Script.

Simulazione di un loop per

Per simulare un ciclo for è necessario mantenere un conteggio del numero di iterazioni del ciclo che si sono verificate:

  • In genere, il conteggio rappresenta un indice degli elementi su cui viene eseguito il processo nel flusso di lavoro.
  • Il conteggio viene valutato come criterio di uscita del ciclo.

Ad esempio, per implementare un flusso di lavoro che esegue un'azione su più nodi JCR, puoi utilizzare un contatore di loop come indice per i nodi. Per mantenere il conteggio, memorizza un valore integer nella mappa dati dell’istanza del flusso di lavoro. Utilizza lo script del Passaggio per incrementare il conteggio e confrontare il conteggio con i criteri di uscita.

function check(){
   var count=0;
   var keyname="loopcount"
   try{
      if (workflowData.getMetaDataMap().containsKey(keyname)){ 
        log.info("goto script: found loopcount key");
        count= parseInt(workflowData.getMetaDataMap().get(keyname))+1;
      } 
 
     workflowData.getMetaDataMap().put(keyname,count);
 
     }catch(err) {
         log.info(err.message);
         return false;
    }
   if (parseInt(count) <7){
       return true;
   } else {
      return false;
   }
}

Suddivisione O

Il Split crea una suddivisione nel flusso di lavoro, dopodiché sarà attivo un solo ramo. Questo passaggio ti consente di introdurre i percorsi di elaborazione condizionale nel flusso di lavoro. Puoi aggiungere i passaggi del flusso di lavoro a ogni ramo in base alle tue esigenze.

NOTA

Per ulteriori informazioni sulla creazione di una divisione OR, consulta: https://helpx.adobe.com/experience-manager/using/aem64_workflow_servlet.html

wf-29

Divisione OR - Configurazione

  • Modifica le proprietà OR Split :

    • Comune

      • Selezionare il numero di rami richiesti; 2, 3, 4 o 5.
    • Ramo : x>

      • Percorso script: Percorso di un file contenente lo script.
      • Script: Aggiungi lo script nella casella.
      • Percorso predefinito: Il ramo predefinito viene seguito quando più rami restituiscono true. Per impostazione predefinita, è possibile specificare un solo ramo.
    NOTA

    È disponibile una scheda separata per ogni ramo:

    • Lo script di ciascun ramo viene valutato uno alla volta.
    • I rami vengono valutati da sinistra a destra.
    • Viene eseguito il primo script che restituisce true.
    • Se nessun ramo restituisce true, il flusso di lavoro non procede.
    ATTENZIONE

    Specificare il percorso Script o Script. Non è possibile utilizzare entrambe le opzioni contemporaneamente. Se si specificano i valori per entrambe le proprietà, il passaggio utilizza il percorso Script.

  • Aggiungi i passaggi del flusso di lavoro ai rami come necessario.

Passaggi e scelte dei partecipanti

Passaggio partecipante

Un Passaggio partecipante consente di assegnare la proprietà per una particolare azione. Il flusso di lavoro procederà solo quando l’utente ha riconosciuto manualmente il passaggio. Viene utilizzato quando desideri che un utente esegua un’azione sul flusso di lavoro; ad esempio, un passaggio di revisione.

Sebbene non sia direttamente correlata, l’autorizzazione utente deve essere presa in considerazione al momento dell’assegnazione di un’azione; l’utente deve avere accesso alla pagina che è il payload del flusso di lavoro.

Passaggio partecipante: configurazione

Per configurare il passaggio , modifica e utilizza le seguenti schede:

NOTA

L’iniziatore del flusso di lavoro viene sempre informato quando:

  • Il flusso di lavoro viene completato (completato).
  • Il flusso di lavoro viene interrotto (terminato).
NOTA

Per abilitare le notifiche e-mail, è necessario configurare alcune proprietà. Puoi anche personalizzare il modello e-mail o aggiungere un modello e-mail per una nuova lingua. Consulta Configurazione notifica e-mail per configurare le notifiche e-mail in AEM.

Passaggio partecipante finestra di dialogo

Utilizza un Passaggio partecipante finestra di dialogo per raccogliere informazioni dall'utente a cui è assegnato l'elemento di lavoro. Questo passaggio è utile per raccogliere piccole quantità di dati utilizzate più avanti nel flusso di lavoro.

Al termine del passaggio, la finestra di dialogo Completa elemento di lavoro contiene i campi definiti nella finestra di dialogo. I dati raccolti nei campi vengono memorizzati nei nodi del payload del flusso di lavoro. I passaggi successivi del flusso di lavoro possono quindi leggere il valore dal repository.

Per configurare il passaggio, specificare il gruppo o l’utente a cui assegnare l’elemento di lavoro e il percorso della finestra di dialogo.

Passaggio partecipante finestra di dialogo - Configurazione

Per configurare il passaggio , modifica e utilizza le seguenti schede:

  • Comune

  • Utente/Gruppo

  • Finestra di dialogo

    • Percorso finestra di dialogo: Percorso del nodo di dialogo della finestra di dialogo creata.

Passaggio partecipante finestra di dialogo - Creazione di una finestra di dialogo

Per creare una finestra di dialogo:

Passaggio partecipante finestra di dialogo - Memorizzazione dei dati nel payload

Puoi memorizzare i dati dei widget nel payload del flusso di lavoro o nei metadati dell’elemento di lavoro. Il formato della proprietà name del nodo del widget determina la posizione di memorizzazione dei dati.

  • Archiviare i dati con il payload

    • Per memorizzare i dati dei widget come proprietà del payload del flusso di lavoro, utilizza il formato seguente per il valore della proprietà name del nodo del widget:

      ./jcr:content/nodename

    • I dati vengono memorizzati nella proprietà nodename del nodo di payload. Se il nodo non contiene tale proprietà, viene creata la proprietà .

    • Quando viene memorizzato con il payload, gli usi successivi della finestra di dialogo con lo stesso payload sovrascrivono il valore della proprietà.

  • Archiviare i dati con l’elemento di lavoro

    • Per memorizzare i dati dei widget come proprietà dei metadati dell'elemento di lavoro, utilizza il formato seguente per il valore della proprietà name:

      nodename

    • I dati vengono memorizzati nella proprietà nodename dell'elemento di lavoro metadata. I dati vengono conservati se la finestra di dialogo viene successivamente utilizzata con lo stesso payload.

Passaggio partecipante finestra di dialogo - Definizione finestra di dialogo

  1. Struttura finestra di dialogo

    Le finestre di dialogo per i passaggi partecipanti alla finestra di dialogo sono simili alle finestre di dialogo create per creare i componenti. Sono memorizzati in:

    /apps/myapp/workflow/dialogs

    Le finestre di dialogo per l’interfaccia touch standard hanno la seguente struttura di nodi:

    newComponent (cq:Component)
      |- cq:dialog (nt:unstructured)
        |- content 
          |- layout 
            |- items 
              |- column 
                |- items 
                  |- component0
                  |- component1
                  |- ...
    
    NOTA

    Per ulteriori informazioni, consulta Creazione e configurazione di una finestra di dialogo.

  2. Proprietà Percorso finestra di dialogo

    La proprietà Dialog Participant Step include la proprietà Dialog Path (insieme alle proprietà di un Participant Step). Il valore della proprietà Percorso finestra di dialogo rappresenta il percorso del nodo dialog della finestra di dialogo.

    Ad esempio, la finestra di dialogo è contenuta in un componente denominato EmailWatch memorizzato nel nodo :

    /apps/myapp/workflows/dialogs

    Per l’interfaccia touch viene utilizzato il seguente valore per la proprietà Percorso finestra di dialogo :

    /apps/myapp/workflow/dialogs/EmailWatch/cq:dialog

    wf-30

  3. Definizione finestra di dialogo di esempio

    Il seguente frammento di codice XML rappresenta una finestra di dialogo che memorizza un valore String nel nodo watchEmail del contenuto del payload. Il nodo titolo rappresenta il componente TextField :

    jcr:primaryType="nt:unstructured" 
        jcr:title="Watcher Email Address Dialog" 
        sling:resourceType="cq/gui/components/authoring/dialog">
        <content jcr:primaryType="nt:unstructured"
            sling:resourceType="granite/ui/components/foundation/container">
            <layout jcr:primaryType="nt:unstructured" 
                margin="false" 
                sling:resourceType="granite/ui/components/foundation/layouts/fixedcolumns"
            />
            <items jcr:primaryType="nt:unstructured">
                <column jcr:primaryType="nt:unstructured"
                    sling:resourceType="granite/ui/components/foundation/container">
                    <items jcr:primaryType="nt:unstructured">
                        <title jcr:primaryType="nt:unstructured" 
                            fieldLabel="Notification Email Address" 
                            name="./jcr:content/watchEmails"
                            sling:resourceType="granite/ui/components/foundation/form/textfield"
                        />
                    </items>
                </column>
            </items>
        </content>
    </cq:dialog>
    

    Questo esempio, nel caso dell’interfaccia touch, darà luogo a una finestra di dialogo come:

    chlimage_1-177

Passaggio partecipante dinamico

Il componente Passaggio partecipante dinamico è simile a Passaggio partecipante con la differenza che il partecipante viene selezionato automaticamente in fase di esecuzione.

Per configurare il passaggio, è necessario selezionare un Selettore partecipante che identifichi il partecipante a cui assegnare l'elemento di lavoro, insieme a una finestra di dialogo.

Passaggio partecipante dinamico - Configurazione

Per configurare il passaggio , modifica e utilizza le seguenti schede:

Passaggio partecipante dinamico - Sviluppo del selettore partecipante

Si crea il selettore dei partecipanti. Pertanto, puoi utilizzare qualsiasi logica o criterio di selezione. Ad esempio, il selettore dei partecipanti può selezionare l'utente (all'interno di un gruppo) con il minor numero di elementi di lavoro. È possibile creare un numero qualsiasi di partecipanti che scelgono di utilizzare con istanze diverse del componente Passaggio partecipante dinamico nei modelli di flusso di lavoro.

Creare un servizio OSGi o un codice ECMAScript che seleziona un utente a cui assegnare l'elemento di lavoro.

  • ECMAscript

    Gli script devono includere una funzione denominata getParticipant che restituisce un ID utente come valore String. Archivia gli script personalizzati, ad esempio nella cartella /apps/myapp/workflow/scripts o in una sottocartella.

    Uno script di esempio è incluso in un'istanza AEM standard:

    /libs/workflow/scripts/initiator-participant-chooser.ecma

    ATTENZIONE

    Non è necessario modificare nulla nel percorso /libs.

    Questo perché il contenuto di /libs viene sovrascritto la prossima volta che aggiorni l'istanza (e può essere sovrascritto quando applichi un hotfix o un feature pack).

    Questo script seleziona l’iniziatore del flusso di lavoro come partecipante:

    function getParticipant() {
        return workItem.getWorkflow().getInitiator();
    }
    
    NOTA

    Il componente Selettore partecipante iniziatore flusso di lavoro estende il Passaggio partecipante dinamico e utilizza questo script come implementazione del passaggio.

  • Servizio OSGi

    I servizi devono implementare l'interfaccia com.day.cq.workflow.exec.ParticipantStepChooser . L’interfaccia definisce i seguenti membri:

    • SERVICE_PROPERTY_LABEL campo: Utilizzare questo campo per specificare il nome del selettore dei partecipanti. Il nome viene visualizzato in un elenco dei selettori dei partecipanti disponibili nelle proprietà Passaggio partecipante dinamico .
    • getParticipant metodo: Restituisce l'ID principale risolto dinamicamente come String valore.
    ATTENZIONE

    Il metodo getParticipant restituisce l'ID principale risolto dinamicamente. Può trattarsi di un ID gruppo o di un ID utente.

    Tuttavia, un id gruppo può essere utilizzato solo per un Passaggio partecipante, quando viene restituito un elenco di partecipanti. Per un Passaggio partecipante dinamico viene restituito un elenco vuoto che non può essere utilizzato per la delega.

    Per rendere la tua implementazione disponibile ai componenti Passaggio partecipante dinamico , aggiungi la tua classe Java a un bundle OSGi che esporta il servizio e distribuisci il bundle sul server AEM.

    NOTA

    Random Participant Choosers è un servizio di esempio che seleziona un utente casuale ( com.day.cq.workflow.impl.process.RandomParticipantChooser). L'esempio di componente Selettore casuale partecipanti estende il Passaggio partecipante dinamico e utilizza questo servizio come implementazione passo.

Passaggio partecipante dinamico - Esempio di servizio di selezione partecipanti

La seguente classe Java implementa l'interfaccia ParticipantStepChooser . La classe restituisce il nome del partecipante che ha avviato il flusso di lavoro. Il codice utilizza la stessa logica utilizzata dallo script di esempio ( initator-participant-chooser.ecma).

L’annotazione @Property imposta il valore del campo SERVICE_PROPERTY_LABEL su Workflow Initiator Participant Chooser.

package com.adobe.example;

import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Properties;
import org.apache.felix.scr.annotations.Property;
import org.apache.felix.scr.annotations.Service;
import org.osgi.framework.Constants;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.adobe.granite.workflow.WorkflowException;
import com.adobe.granite.workflow.WorkflowSession;
import com.adobe.granite.workflow.exec.ParticipantStepChooser;
import com.adobe.granite.workflow.exec.WorkItem;
import com.adobe.granite.workflow.metadata.MetaDataMap;

@Component
@Service
@Properties({
        @Property(name = Constants.SERVICE_DESCRIPTION, value = "An example implementation of a dynamic participant chooser."),
        @Property(name = ParticipantStepChooser.SERVICE_PROPERTY_LABEL, value = "Workflow Initiator Participant Chooser (service)") })
public class InitiatorParticipantChooser implements ParticipantStepChooser {

 private Logger logger = LoggerFactory.getLogger(this.getClass());

 public String getParticipant(WorkItem arg0, WorkflowSession arg1,
   MetaDataMap arg2) throws WorkflowException {

  String initiator = arg0.getWorkflow().getInitiator();
  logger.info("Assigning Dynamic Participant Step work item to {}",initiator);

  return initiator;
 }
}

Nella finestra di dialogo delle proprietà Passaggio partecipante dinamico , l'elenco Selettore partecipante include l'elemento Workflow Initiator Participant Chooser (script) che rappresenta questo servizio.

"All’avvio del modello di flusso di lavoro, il registro indica l’ID dell’utente che ha avviato il flusso di lavoro e a cui è stato assegnato l’elemento di lavoro. In questo esempio, l’utente admin ha avviato il flusso di lavoro.

13.09.2015 15:48:53.037 *INFO* [10.176.129.223 [1347565733037] POST /etc/workflow/instances HTTP/1.1] com.adobe.example.InitiatorParticipantChooser Assigning Dynamic Participant Step work item to admin

Passaggio partecipante modulo

Il Passaggio partecipante al modulo presenta un modulo quando l’elemento di lavoro viene aperto. Quando l’utente compila e invia il modulo, i dati del campo vengono memorizzati nei nodi del payload del flusso di lavoro.

Per configurare il passaggio, specificare il gruppo o l’utente a cui assegnare l’elemento di lavoro e il percorso del modulo.

ATTENZIONE

Passaggio partecipante modulo - Configurazione

Per configurare il passaggio , modifica e utilizza le seguenti schede:

Passaggio partecipante modulo - Creazione del modulo

Creare un modulo da utilizzare normalmente con un Passaggio partecipante al modulo. Tuttavia, i moduli per un Passaggio partecipante a un modulo devono avere le seguenti configurazioni:

  • Per il componente Inizio modulo deve essere impostata la proprietà Tipo azione su Edit Workflow Controlled Resource(s).

  • Il componente Inizio modulo deve avere un valore per la proprietà Form Identifier .

  • Ai componenti modulo deve essere impostata la proprietà Nome elemento sul percorso del nodo in cui sono memorizzati i dati del campo. Il percorso deve individuare un nodo nel contenuto del payload del flusso di lavoro. Il valore utilizza il formato seguente:

    ./jcr:content/path_to_node

  • Il modulo deve includere un componente Pulsante di invio flusso di lavoro. Non configuri proprietà del componente.

I requisiti del flusso di lavoro determinano dove memorizzare i dati dei campi. Ad esempio, i dati dei campi possono essere utilizzati per configurare le proprietà del contenuto della pagina. Il seguente valore di una proprietà Nome elemento memorizza i dati del campo come valore della proprietà redirectTarget del nodo jcr:content:

./jcr:content/redirectTarget

Nell’esempio seguente, i dati dei campi vengono utilizzati come contenuto di un componente Testo nella pagina del payload:

./jcr:content/par/text_3/text

"Il primo esempio può essere utilizzato per qualsiasi pagina sottoposta a rendering dal componente cq:Page. Il secondo esempio può essere utilizzato solo quando la pagina di payload include un componente Testo con un ID di text_3.

Il modulo può trovarsi in qualsiasi punto dell’archivio, tuttavia gli utenti del flusso di lavoro devono essere autorizzati a leggere il modulo.

Selettore casuale partecipanti

Il passaggio Selettore casuale partecipante è un selettore partecipante che assegna l’elemento di lavoro generato a un utente selezionato in modo casuale da un elenco.

wf-31

Selettore casuale partecipanti - Configurazione

Per configurare il passaggio , modifica e utilizza le seguenti schede:

  • Comune

  • Argomenti

    • Partecipanti: Specifica l'elenco di utenti disponibili per la selezione. Per aggiungere un utente all'elenco, fare clic su Aggiungi elemento e digitare il percorso principale del nodo utente o l'ID utente. L'ordine degli utenti non influisce sulla probabilità di assegnazione di un elemento di lavoro.

Selettore partecipante iniziatore flusso di lavoro

Il passaggio Selettore partecipante iniziatore flusso di lavoro è un selettore dei partecipanti che assegna l’elemento di lavoro generato all’utente che ha avviato il flusso di lavoro. Non sono disponibili proprietà da configurare diverse dalle proprietà Common .

Selettore partecipante iniziatore flusso di lavoro - Configurazione

Per configurare il passaggio , modifica utilizzando le seguenti schede:

Passaggio processo

Un Passaggio processo esegue un ECMAScript o chiama un servizio OSGi per eseguire l'elaborazione automatica.

wf-32

Passaggio del processo: configurazione

Per configurare il passaggio , modifica e utilizza le seguenti schede:

In questa pagina