Проблема рабочего процесса «исправить определение рабочего процесса или ввести входные значения, чтобы исправить эти ошибки» - PullRequest
0 голосов
/ 05 ноября 2019

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

"Параметры аргумента корневого действия неверны. Либо исправьте определение рабочего процесса, либо предоставьте входные значения, чтобы исправить эти ошибки: 'DynamicActivity': значение для требуемого аргумента действия«PramName» не было предоставлено. Имя параметра: программа «

Я получил эту ошибку специально для этой строки» wa.Load (Guid.Parse (ComplaintInstanceId));; *

Обычно я не делал 'Я не получил эту проблему в функции добавления, но я получил это исключение из других функций ..... Я много искал об этой причине исключения и проверял таблицы рабочих процессов в БД, но без каких-либо преимуществ ... Я хочу найти решение здесь, и спасибо ваванс.

            public void  Add(int param1, string param2)
    {
            AutoResetEvent syncEvent = new AutoResetEvent(false);
            if (gActivity == null)
            {
                StrmWorkFlow = StorageEngine.LoadFile(Guid.Parse(param2), "", "mywork-flow.xaml");
                gActivity = ActivityXamlServices.Load(new XamlXmlReader(StrmWorkFlow));
            }
            System.Activities.DurableInstancing.SqlWorkflowInstanceStore store = null;

            string ConnectionString = connectionString();
            store = new SqlWorkflowInstanceStore(ConnectionString);
            WorkflowApplication wa = new WorkflowApplication(gActivity,
                                                             new Dictionary<string, object> { { "param1", param1 } });

            wa.InstanceStore = store;
            wa.PersistableIdle = delegate(WorkflowApplicationIdleEventArgs wfea)
            {
                syncEvent.Set();
                return PersistableIdleAction.Unload;
            };

            Updateparam(param1, wa.Id.ToString());
            GenericActivity Actvty = new GenericActivity(); 
            wa.Run();
            syncEvent.WaitOne();

    }

    public void Continue(int ActivityID , int param1 , string param2 , string paramInstanceId , string ActivityBookMark)
    {
        try
        {
            AutoResetEvent syncEvent = new AutoResetEvent(false);
            if (paramInstanceId != null)
            {
                GenericActivity Actvty = new GenericActivity(); 
                if (gActivity == null)
                {
                    StrmWorkFlow = StorageEngine.LoadFile(Guid.Parse(param2), "", "mywork-flow.xaml");
                    gActivity = ActivityXamlServices.Load(new XamlXmlReader(StrmWorkFlow));
                }

                SqlWorkflowInstanceStore store = null;
                store = new SqlWorkflowInstanceStore(connectionString());
                WorkflowApplication wa = new WorkflowApplication(gActivity);
                wa.InstanceStore = store;
                wa.PersistableIdle = delegate(WorkflowApplicationIdleEventArgs wfea)
                {
                    syncEvent.Set();
                    return PersistableIdleAction.Unload;
                };
                wa.Completed = delegate(WorkflowApplicationCompletedEventArgs e)
                {
                    syncEvent.Set();
                };
                Dictionary<string, object> wfParameters = new Dictionary<string, object>();

                wa.Load(Guid.Parse(paramInstanceId));
                // objparam.InstanceId = wa.Id;
                Updateparam(param1, wa.Id.ToString());
                wa.ResumeBookmark(ActivityBookMark.Trim(), wfParameters);
                syncEvent.WaitOne();
            }
        }
        catch (Exception ex)
        {

        }
    }

    public void ContinueWithAction(int ActivityID, int param1,string param2, string paramInstanceId , string ActivityBookMark, StatusResult Ctatus)
    {
        try
        {
            AutoResetEvent syncEvent = new AutoResetEvent(false);
            if (paramInstanceId != null)
            {
                GenericActivity Actvty = new GenericActivity(); 
                if (gActivity == null)
                {
                    StrmWorkFlow = StorageEngine.LoadFile(Guid.Parse(param2), "", "mywork-flow.xaml");
                    gActivity = ActivityXamlServices.Load(new XamlXmlReader(StrmWorkFlow));
                }
                SqlWorkflowInstanceStore store = null;
                store = new SqlWorkflowInstanceStore(connectionString());
                WorkflowApplication wa = new WorkflowApplication(gActivity);
                wa.InstanceStore = store;
                wa.PersistableIdle = delegate(WorkflowApplicationIdleEventArgs wfea)
                {
                    syncEvent.Set();
                    return PersistableIdleAction.Unload;
                };
                wa.Completed = delegate(WorkflowApplicationCompletedEventArgs e)
                {
                    syncEvent.Set();
                };
                wa.Load(Guid.Parse(paramInstanceId));
                Updateparam(param1, wa.Id.ToString());


                wa.ResumeBookmark(ActivityBookMark.Trim(), Ctatus);

                syncEvent.WaitOne();
            }
        }
        catch (Exception ex)
        {

        }
       // return new Task<int>(() => 1);
    }
    public void ContinueWithActionFeedBack(int ActivityID, int param1,string param2, string paramInstanceId , string ActivityBookMark, FeedbackResult Fback )
    {
        try
        {
            AutoResetEvent syncEvent = new AutoResetEvent(false);
            if (paramInstanceId != null)
            {
                GenericActivity Actvty = new GenericActivity(); 
                if (gActivity == null)
                {
                    StrmWorkFlow = StorageEngine.LoadFile(Guid.Parse(param2), "", "mywork-flow.xaml");
                    gActivity = ActivityXamlServices.Load(new XamlXmlReader(StrmWorkFlow));
                }

                SqlWorkflowInstanceStore store = null;
                store = new SqlWorkflowInstanceStore(connectionString());
                WorkflowApplication wa = new WorkflowApplication(gActivity);
                wa.InstanceStore = store;
                wa.PersistableIdle = delegate(WorkflowApplicationIdleEventArgs wfea)
                {
                    syncEvent.Set();
                    return PersistableIdleAction.Unload;
                };
                wa.Completed = delegate(WorkflowApplicationCompletedEventArgs e)
                {
                    syncEvent.Set();
                };
                wa.Load(Guid.Parse(paramInstanceId));
                Updateparam(param1, wa.Id.ToString());


                wa.ResumeBookmark(ActivityBookMark.Trim(), Fback);

                syncEvent.WaitOne();
            }
        }
        catch (Exception ex)
        {

        }
       // return new Task<int>(() => 1);
    }
...