Создание службы WCF, которая создает и взаимодействует с несколькими различными рабочими процессами в 4.0 - PullRequest
0 голосов
/ 05 января 2011

Я новичок в workflow 4.0 и WCF и пытаюсь создать службу WCF, которая создает, запускает и взаимодействует с рабочими процессами разных типов.

Используя workflow 3.5, я смог создать хороший веб-сервис, которыйсоздает и уничтожает рабочие процессы различных типов и позволяет единому интерфейсу взаимодействовать с рабочими процессами различных типов.Например, чтобы создать рабочий процесс с заданным кодом в 3.5: (где код соответствует типу рабочего процесса)

  [WebMethod]
    public string CreateWorkflow(int code)
    {
        WorkflowRuntime runtime = createRuntime();
        try
        {
            Type type = GetWorkflowType(code);
            string reply = "";
            WorkflowInstance instance =
                runtime.CreateWorkflow(type);
            instance.Start();
            reply = instance.InstanceId.ToString();
            instance.Unload();
            return reply;
        }
        catch (Exception e)
        {
            return e.ToString();
        }
        finally
        {
            closeRuntime(runtime);
        }
    }

, а затем связаться с рабочим процессом типа любого :

          ..
          WorkflowInstance instance = runtime.GetWorkflow(new Guid(Id));
          PassDataEventArgs eve = new PassDataEventArgs(instance.InstanceId, data);
          InputData(null, eve);
          ..

Можно ли представить такой интерфейс, используя WCF и рабочий процесс 4.0?Мне удалось создать рабочие процессы разных типов с использованием WCF, но для связи с ними я не уверен, как передавать данные.В идеале вызов метода типа passData (идентификатор Guid, данные объекта) в моей службе WCF передал бы эти данные экземпляру рабочего процесса любого типа (при обнаружении ошибки, если рабочий процесс не находится в правильном состоянии для получения данных в то время).Может ли кто-нибудь дать мне какие-либо сведения о том, как я могу добиться таких общих связей между несколькими типами рабочих процессов в рамках одной службы WCF?

1 Ответ

1 голос
/ 05 января 2011

В WF4 обычным способом запуска рабочего процесса в качестве службы является использование WorkflowServiceHost.Это, однако, ограничено одним определением рабочего процесса для WorkflowServiceHost.Если вам нужно несколько рабочих процессов, вы должны использовать несколько WorkflowServiceHost.

Теперь вы можете создать общую службу, которая будет принимать все сообщения, проверять их и, в соответствии с некоторыми критериями, передавать их в правильный WorkflowServiceHost.Альтернативой является не использование WorkflowServiceHost, а вместо этого использование WorkflowApplication, но это будет означать написание большого количества программного кода.

...