Пользовательский интерфейс поверх рабочего процесса Windows - PullRequest
1 голос
/ 30 апреля 2009

Существуют ли какие-либо встроенные возможности пользовательского интерфейса при использовании Windows Workflow ..

Допустим, у меня есть рабочий процесс, который занимает час, чтобы выполнять различные действия все время. Пока он работает, я хочу посмотреть, какая активность в данный момент активна, какие уже запущены и т. Д.

Нужно ли самому кодировать этот интерфейс или в WF есть встроенные функции, которые графически отображают состояние и т. Д. Рабочего процесса?

Ответы [ 3 ]

0 голосов
/ 30 апреля 2009

Встроенного интерфейса нет.

Но вы можете создать его, подписавшись на события в WorflowInstance (см. Другой ответ), или воспользовавшись Tracking Service .

Первый просто настроить для быстрого решения, но второй будет работать с несколькими хост-процессами и долго выполняющимися (незагруженными) экземплярами рабочих процессов.

0 голосов
/ 30 апреля 2009

Проверьте этот пример кода на MSDN:

http://msdn.microsoft.com/en-us/library/ms741706.aspx

0 голосов
/ 30 апреля 2009

Чтобы узнать, в каком состоянии находится рабочий процесс, я подписываюсь на событие WorkflowIdled и делаю что-то вроде этого:

           private delegate void UpdateDelegate();
   void workflowRuntime_WorkflowIdled(object sender, WorkflowEventArgs e)
        {
            StateMachineWorkflowInstance stateMachineInstance = new StateMachineWorkflowInstance(MyManager.WorkflowRuntime, MyInstance.Id);
            UpdateDelegate LclUpdateDelgate = delegate()
            {
                // Update the workflow state on the form thread
                if (stateMachineInstance.CurrentState != null)
                    LabelWorkflowState.Text = stateMachineInstance.CurrentStateName;
                else
                    LabelWorkflowState.Text = "";

            };
            this.Invoke(LclUpdateDelgate);
        }
...