API Progress - TIA Portal

Introduzione al TIA Portal

ft:publication_title
Introduzione al TIA Portal
Product
TIA Portal
Version
V21
Publication date
11/2025
Language
it-IT
API Progress

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".

  • context: Questo parametro contiene l'informazione sul workflow appena eseguito. Il valore viene generato dall'API dell'Add-In del workflow e può essere solo letto e utilizzato.

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.

  • text: Questo parametro contiene il testo del messaggio di avanzamento.

  • detailedText: Con questo parametro possono essere visualizzate informazioni aggiuntive sull'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");

}

}