Um Workflow de máquina de estados permite que sejam efectuadas pesquisas sobre uma instância.
Para tal deve-se usar um objecto da classe StateMachineWorkflowInstance (System.Workflow.Activities), que permite por exemplo obter a seguinte informação de uma instância:
- O estado corrente;
- As transições possiveis;
- O Histórico das transições;
- Enumerar todos os estados da máquina de estados
Exemplo
StateMachineWorkflowInstance stateMachineWorkflowInstance = new StateMachineWorkflowInstance(workflowRuntime, instanceId);
//obter o estado corrente
StateActivity currentStateActivity = stateMachineWorkflowInstance.CurrentState;
//obter os estados possíveis de acordo com o estado corrente
ReadOnlyCollection<string> possibleStateTransitions = stateMachineWorkflowInstance.PossibleStateTransitions;
//só funciona se SqlTrackingService está a ser usado
ReadOnlyCollection<string> stateHistory = stateMachineWorkflowInstance.StateHistory;
//obter todos os estados
ReadOnlyCollection<StateActivity> stateActivitiesList = stateMachineWorkflowInstance.States;