이 문서에서는 Visual Studio 2010의 Windows Workflow 4.0 관련 응용 프로그램을 소개합니다. 이 짧은 문서가 Workflow 4.0을 개발하는 데 도움이 되기를 바랍니다.
최근 가상 머신에 Visual Studio 2010을 설치했습니다. 인터페이스는 WPF이며 CPU와 메모리 사용량이 과장되지 않습니다. 매우 간단한 첨부된 랩 프로젝트를 열면 일반적으로 CPU 사용량이 20% 미만이고 메모리 사용량은 800M 미만입니다.
집에 더 가까이에서 Windows Workflow 4.0을 소개하겠습니다.
워크플로 모델이 3.5에 비해 많이 변경되었습니다.
3.5의 워크플로는 WorkflowRuntime에서 호스팅되고 워크플로 인스턴스는 WorkflowRuntime을 통해 생성 및 실행된다는 것을 알고 있습니다. 4.0에는 WorkflowRuntime 클래스가 없으므로 WorkflowInstance 인스턴스를 쉽게 만들고 워크플로를 직접 실행할 수 있습니다. Lab의 코드는 다음과 같습니다.
WorkflowInstance myInstance = 새로운 WorkflowInstance(new SayHello(),
new SayHelloInArgs(사용자 이름));
myInstance.OnCompleted = 대리자(WorkflowCompletedEventArgs e)
{
Console.WriteLine("*** OnCompleted 대리인이 스레드 {0}에서 실행 중입니다 ***",
Thread.CurrentThread.ManagedThreadId);
SayHelloOutArgs outArgs = new SayHelloOutArgs(e.Outputs);
인사말 = outArgs.Greeting;
syncEvent.Set();
};
myInstance.OnUnhandledException = 대리자(WorkflowUnhandledExceptionEventArgs e)
{
Console.WriteLine(e.UnhandledException.ToString());
UnhandledExceptionAction.Terminate를 반환합니다.
};
myInstance.OnAborted = 대리자(WorkflowAbortedEventArgs e)
{
Console.WriteLine(e.Reason);
syncEvent.Set();
};
myInstance.Run();
4.0에는 WorkflowInvoker 클래스가 있습니다. 이 클래스는 워크플로를 실행할 수도 있지만 이 클래스는 워크플로를 테스트하는 데 사용됩니다. 이로 인해 이전 버전의 워크플로 테스트 난이도가 크게 향상되었습니다.
[테스트방법]
공공 무효 ShouldReturnGreetingWithName()
{
Dictionary<string, object> 입력 = 새 사전
<문자열, 객체>()
{
{"사용자 이름", "테스트"}
};
IDictionary<string, object> 출력;
출력 = WorkflowInvoker.Invoke(new SayHello(), 입력);
Assert.AreEqual("안녕하세요, 워크플로 4의 테스트", 출력["인사말"]);
}
3.5의 Activity는 모든 활동의 기본 클래스입니다. 4.0에서는 Activity의 Execute() 메서드만 재정의하면 되며 모든 활동은 WorkflowElement 추상 클래스에서 파생되며 Visual Studio에서 기본적으로 사용자 지정됩니다. 활동은 CodeActivity 또는 CodeActivity<T>에서 상속됩니다. 마찬가지로 사용자 지정 실행 논리를 구현하려면 Execute() 메서드도 다시 작성해야 합니다.
공개 클래스 MyActivity1 : CodeActivity
{
보호된 재정의 void Execute(CodeActivityContext 컨텍스트)
{
//구현 코드
}
}
물론 Activity에서 사용자 지정 활동을 계속 파생시킬 수 있지만 3.5와는 매우 다릅니다.
공개 클래스 SayHelloInCode : 활동
{
보호된 재정의 WorkflowElement CreateBody()
{
새로운 시퀀스() 반환
{
활동 =
{
새로운쓰기라인()
{
Text = "코드의 Hello Workflow 4"
}
}
};
}
}
4.0에 새로 추가된 워크플로 서비스 기능은 워크플로를 WCF 서비스로 직접 게시할 수 있습니다. 물론 워크플로도 WCF 응답 기능으로 설계되어야 합니다. 4.0에서는 수신, 수신답변, 보내기, 보내기라는 4가지 WCF 관련 활동을 제공합니다. 이러한 활동을 통해 WCF 서비스 작업을 시각적으로 정의할 수 있습니다.
4.0에서는 워크플로우 디자이너의 기본 모델이 구현되어 있으며, 맞춤형 디자이너도 쉽게 구현할 수 있습니다.