11.3 SDK Task Condition

E’ una tipologia di funzione che viene utilizzata per eseguire dei controlli custom nelle task di controllo dei processi (conditional task).

Per registrarle va utilizzato il metodo:

SDK::setProcessMakerTaskCondition($func, $src, $label)
$func : nome della funzione
$src : percorso file contenente la funzione
$label : etichetta della funzione

Per de-registrare il file usare:

SDK::unsetProcessMakerTaskCondition($func);
$func : nome della funzione

Se richiamate sulla task di “condizione iniziale” (task nella quale vengono definite le regole di partenza del processo), è possibile rendere specifica la partenza del processo in base al risultato restituito.


taskCondition_1.png

Se richiamate invece sulle delle semplici task di controllo permettono di far prendere al processo strade differenti in base al risultato restituito.

taskCondition_2.png

Le funzioni di questa tipologia saranno sempre disponibili sotto forma di variabili utilizzabili per eseguire controlli.
Un esempio concreto di funzione SDK di questa tipologia è la funzione “get_running_process_current_user” che permette di verificare se il nome dell’utente corrente è uguale o diverso dall’utente definito nella condizione.
Se utilizzata nella condizione iniziale permette di far partire il processo solamente se l’utente corrente è uguale ad un determinato utente.

taskCondition_3.PNG

Esempio

Registro una funzione per verificare se l'indirizzo di fatturazione dell'azienda è uguale quello di spedizione.

SDK::setProcessMakerTaskCondition('vte_compare_account_bill_ship_street', 'modules/SDK/src/ProcessMaker/Utils.php', 'Indirizzi di spedizione e fatturazione uguali [e/n]');

Nella funzione implementata sono presenti i seguenti parametri.
$module: modulo dell'entità su cui viene eseguita la condizione
$id: identificativo dell'entità in formato ws (es. 3x55126)
$data: array con i valori dei campi del record

La funzione deve restituire una stringa da usare per il confronto lato interfaccia.

function vte_compare_account_bill_ship_street($module, $id, $data) {
	list($wsModId,$id) = explode('x',$id);	// do it every time
	
	if ($data['bill_street'] == $data['ship_street']) {
		return 'e';
	} else {
		return 'n';
	}
}

A questo punto posso configurare un processo che parte alla creazione di un'azienda quando l'indirizzo di di fatturazione è diverso da quello di spedizione.

Schermata 2024-02-23 alle 13.02.56.png


Revision #5
Created 3 June 2022 09:58:35
Updated 25 September 2024 09:39:22 by Riccardo