Introduzione
Quando gli Add-Ins eseguono delle azioni che richiedono un certo tempo, è possibile informare l'utente sullo stato di avanzamento dell'azione. A tale scopo è possibile visualizzare un messaggio di avanzamento in una finestra di dialogo. L'utente ha la possibilità di chiudere la finestra di dialogo con il pulsante "Annulla". L'azione da eseguire in un caso del genere va programmata nell'Add-In.
La visualizzazione di un messaggio di avanzamento è possibile solo per gli Add-Ins dei workflow.
|
Nota Indicatore di avanzamento specifico Osservare che non è possibile estendere i testi degli indicatori di avanzamento specifici di un workflow tramite un Add-In Progress API, ma solo i testi degli indicatori di avanzamento non specifici. Gli indicatori di progresso specifici sono indicatori di avanzamento che mostrano i l'avanzamento in valori percentuali. |
API
La tabella seguente elenca i metodi per leggere "ProgressContext" da TIA Portal:
|
Metodo |
Descrizione |
|---|---|
|
GetService<ProgressProvider>() |
È possibile accedere al metodo "GetService<ProgressProvider>" con l'oggetto "context".
Il metodo restituisce "ProgressContext", il cui valore può essere utilizzato per aggiungere i messaggi di avanzamento per l'Add-In ad un messaggio di avanzamento esistente del workflow. Il workflow può fornire informazioni sull'avanzamento tramite il contesto assegnato anche se non viene ancora visualizzato nessun messaggio di avanzamento. In questo caso per l'Add-In viene visualizzato un nuovo messaggio di avanzamento. |
La tabella seguente mostra la proprietà di "ProgressContext":
|
Proprietà |
Tipo di dati |
Accesso |
Descrizione |
|---|---|---|---|
|
IsCancelRequested |
Boolean |
Read |
Indica se il messaggio di avanzamento è stato annullato. |
La seguente tabella elenca i metodi di "ProgressContext":
|
Metodo |
Descrizione |
|---|---|
|
void Update(string text, string detailedText) |
Questo metodo restituisce i contenuti delle variabili "text" e "detailedText" come messaggio di avanzamento nella finestra di dialogo.
|
Esempio di codice per la visualizzazione dei messaggi di avanzamento
L'esempio seguente mostra come visualizzare un messaggio di avanzamento dettagliato in una finestra di dialogo:
public class WorkflowInfiniteSimpleProgressAddInItem : RfcSimpleLogWorkflowItem
{
public override WorkflowExecutionResult Execute(IEnumerable<IEngineeringObject> selectedObjects, RfcSimpleLogWorkflowContext context)
{
using (var progressContext = context.GetService<ProgressProvider>())
{
//...
progressContext.Update($"From AddIn iteration {i}",
$"Message from AddIn iteration : {i}");
//...
}
//...
}
}
Esempio di codice per la verifica dopo un'interruzione
L'esempio seguente illustra come verificare se la finestra di dialogo è stata chiusa con il pulsante "Annulla" e come reagire all'evento:
public class WorkflowInfiniteSimpleProgressAddInItem : RfcSimpleLogWorkflowItem
{
public override WorkflowExecutionResult Execute(IEnumerable<IEngineeringObject> selectedObjects, RfcSimpleLogWorkflowContext context)
{
using (var progressContext =context.GetService<ProgressProvider>())
{
for (var i = 0; i < 9; i++)
{
if (progressContext.IsCancelRequested)
{
//gracefully exit the ongoing work
return context.WorkflowExecutionResult(WorkflowReturnCode.Cancel, "AddIn Execution cancelled");
}
// do some long running task
progressContext.Update($"From Add-In iteration {i}", $"Message from Add-In iteration : {i}");
}
}
return context.WorkflowExecutionResult(WorkflowReturnCode.Success, "AddIn Execution successful");
}
}
Vedere anche