State Machine Persistance WorkFlow - PullRequest
       5

State Machine Persistance WorkFlow

0 голосов
/ 25 августа 2009

Привет всем, я создал WinForms для обработки постоянных действий с помощью Windows WorkFlow Foundation. Я использую .NET 3.0 SQL и VS2005 в качестве IDE с C # в качестве языка кода. Кроме того, окружающая среда предписана мне корпоративной политикой развития. Так что, пока динозавры не решат обновиться, я застрял с VS2005.

Моя проблема в том, что я могу работать с 1 рабочим процессом одновременно, и я хотел бы иметь возможность обрабатывать несколько рабочих процессов. Как и в случае, когда я нажимаю кнопку «Отправить» в моей форме, я хотел бы иметь возможность создать новый экземпляр WorkFlow.

Я создал среду выполнения и добавил все соответствующие сервисы. Я цепляюсь за постоянство, и когда я нажимаю кнопку «Отправить», я запускаю экземпляр WorkFlow. Я относительно новичок в WorkFlow Foundation, и ссылки на MSDN практически не помогли мне. Если бы кто-то мог указать мне правильное направление в моем исходном коде, это было бы полезно.

Я прикрепил ссылку на источник для моего проекта.

Нажмите здесь для получения источника

Заранее спасибо!

1 Ответ

0 голосов
/ 26 августа 2009

Я посмотрел, и кажется, что вы создаете новый рабочий процесс каждый раз, когда нажимаете кнопку Отправить. Я получаю новый идентификатор экземпляра, что является хорошим знаком :) PopulatePSUP (строка instanceID) захватывает идентификатор экземпляра для раскрывающегося списка. Но вы храните только один идентификатор экземпляра за раз в Guid _instanceID. Эта переменная уровня формы затем используется для всех событий кнопки. Вы можете использовать cboPSUPItems.Text.

Что-то вроде:

    private void btnPSUPApprove_Click(object sender, EventArgs e)
    {
        string instanceId = this.cboPSUPItems.Text;

        if ( instanceId.Length > 0 )
        {
            myArgs.Approved = true;
            approved = "Yes";
            this.resumeHistory[ instanceId ].Clear( );
            this.resumeHistory[ instanceId ].Add( "Name: " + applicantName );
            this.resumeHistory[ instanceId ].Add( "Email:" + applicantEmail );
            this.resumeHistory[ instanceId ].Add( "Text:" + applicantText );
            this.resumeHistory[ instanceId ].Add( "Approved:" + approved );
            this.resumeHistory[ instanceId ].Add( "Denied:" + denied );
            this.resumeHistory[ instanceId ].Add( "PD Approval Requested:" + pDRequest );
            resumeService.RaisePSUPApprovedEvent( new Guid(instanceId) , myArgs );
            this.cboPSUPItems.Items.Remove( this.cboPSUPItems.SelectedItem );
            txtPSUPNotes.Clear( );
        }
    }

Возможно, вы захотите подумать об использовании коллекции / списка для хранения экземпляров экземпляров. Для любой логики широкого рабочего процесса.

Что-то вроде:

List<Guid> _instanceIds = new List<Guid>( );

...

_instanceIds.Add( instance.InstanceId );
...