작업 2: 사용자 지정 활동 호스트 응용 프로그램 만들기
이 작업에서는 이 자습서에서 사용되는 호스트 응용 프로그램을 만듭니다.
자습서에 사용하기 위해 빌드하는 응용 프로그램은 Windows Form을 사용하여 빌드되는 텍스트 기반 웹 브라우저입니다. 폼에는 웹 페이지 주소를 입력하는 데 사용되는 텍스트 상자와 Go라는 단추가 포함되어 있습니다. 이 단추를 클릭하면 응용 프로그램에서 순차 워크플로를 로드하고 시작합니다. 이 워크플로에는 웹 페이지의 텍스트를 다운로드하는 작업을 수행하는 단일 사용자 지정 활동이 포함되어 있습니다.
참고
이 연습을 차례대로 수행하는 것이 좋지만 반드시 그럴 필요는 없습니다. 샘플 프로젝트를 열고 다음 단원의 단계를 진행하여 이 연습을 시작할 수 있습니다.
Visual Studio를 사용하는 경우 소스 코드 파일(program1.vb 또는 program1.cs)이 작업 1에서 자동으로 만들어졌습니다. 이 샘플에서 사용할 수 있도록 파일을 수정하려면 다음 단계를 따르십시오.
Visual Studio에서 Windows Form 소스 코드 파일을 만들려면
솔루션 탐색기에서 program1을 마우스 오른쪽 단추로 클릭하고 이름 바꾸기를 선택합니다. 이름을 CustomActivityHost로 변경합니다.
솔루션 탐색기에서 CustomActivityHost를 두 번 클릭하여 왼쪽 창의 코드 편집기에서 엽니다. Windows Form 응용 프로그램에 대한 다음 코드를 추가합니다.
using System; using System.Collections.Generic; using System.ComponentModel; using System.Windows.Forms; using System.Workflow.Runtime; namespace Microsoft.Samples.Workflow.Tutorials.CustomActivity { public class MainForm : Form { private System.Windows.Forms.Label addressCaption; private System.Windows.Forms.TextBox address; private System.Windows.Forms.TextBox data; private System.Windows.Forms.Button goButton; private System.ComponentModel.IContainer components = null; public MainForm() { InitializeComponent(); } private void goButton_Click(object sender, EventArgs e) { } protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } private void InitializeComponent() { this.addressCaption = new System.Windows.Forms.Label(); this.address = new System.Windows.Forms.TextBox(); this.data = new System.Windows.Forms.TextBox(); this.goButton = new System.Windows.Forms.Button(); this.SuspendLayout(); // // addressCaption // this.addressCaption.AutoSize = true; this.addressCaption.Location = new System.Drawing.Point(15, 13); this.addressCaption.Name = "addressCaption"; this.addressCaption.Size = new System.Drawing.Size(41, 13); this.addressCaption.TabIndex = 0; this.addressCaption.Text = "Address"; // // address // this.address.Anchor = ((System.Windows.Forms.AnchorStyles) (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.address.Location = new System.Drawing.Point(16, 28); this.address.Name = "address"; this.address.Size = new System.Drawing.Size(430, 20); this.address.TabIndex = 0; this.address.Text = "http://"; // // data // this.data.Anchor = ((System.Windows.Forms.AnchorStyles) ((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.data.Location = new System.Drawing.Point(15, 55); this.data.Multiline = true; this.data.Name = "data"; this.data.ReadOnly = true; this.data.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; this.data.Size = new System.Drawing.Size(496, 320); this.data.TabIndex = 2; // // goButton // this.goButton.Location = new System.Drawing.Point(462, 25); this.goButton.Name = "goButton"; this.goButton.Size = new System.Drawing.Size(49, 23); this.goButton.TabIndex = 1; this.goButton.Text = "Go"; this.goButton.Anchor = ((System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.goButton.Click += new System.EventHandler(this.goButton_Click); // // MainForm // this.AcceptButton = this.goButton; this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(523, 407); this.Controls.Add(this.goButton); this.Controls.Add(this.data); this.Controls.Add(this.address); this.Controls.Add(this.addressCaption); this.Name = "MainForm"; this.Text = "Web Tear"; this.ResumeLayout(false); this.PerformLayout(); } } static class Program { [STAThread] static void Main() { Application.EnableVisualStyles(); Application.Run(new MainForm()); } } }
텍스트 편집기를 사용하여 Windows Form 소스 코드 파일을 만들려면
주 프로젝트 파일(CustomActivity) 끝에 있는 Import 요소 앞에 새 ItemGroup 요소를 삽입합니다.
ItemGroup 요소에서 새 Compile 요소를 추가합니다.
파일 이름을 C# 프로젝트의 경우 CustomActivityHost.cs로 사용하고 Visual Basic .NET 프로젝트의 경우 CustomActivityHost.vb로 사용하여 Include라는 새 특성을 Compile 요소에 추가합니다.
SubType이라는 새 자식 요소를 Compile 요소에 추가합니다.
이 요소에 Form 값을 지정합니다. ItemGroup 노드는 다음과 같이 나타납니다.
<ItemGroup> <Compile Include="CustomActivityHost.vb"> <SubType>Form</SubType> </Compile> </ItemGroup>
<ItemGroup> <Compile Include="CustomActivityHost.cs"> <SubType>Form</SubType> </Compile> </ItemGroup>
Windows Form 코드를 호스트 응용 프로그램에 추가하려면
프로젝트 디렉터리에서 CustomActivityHost라는 새 파일을 만듭니다.
C# 응용 프로그램을 만드는 경우 파일에 .cs 확장명을 지정하고 Visual Basic 응용 프로그램을 만드는 경우에는 파일에 .vb 확장명을 지정합니다.
CustomActivityHost 소스 코드 파일에서 Windows Form 응용 프로그램에 대한 다음 코드를 추가합니다.
using System; using System.Collections.Generic; using System.ComponentModel; using System.Windows.Forms; using System.Workflow.Runtime; namespace Microsoft.Samples.Workflow.Tutorials.CustomActivity { public class MainForm : Form { private System.Windows.Forms.Label addressCaption; private System.Windows.Forms.TextBox address; private System.Windows.Forms.TextBox data; private System.Windows.Forms.Button goButton; private System.ComponentModel.IContainer components = null; public MainForm() { InitializeComponent(); } private void goButton_Click(object sender, EventArgs e) { } protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } private void InitializeComponent() { this.addressCaption = new System.Windows.Forms.Label(); this.address = new System.Windows.Forms.TextBox(); this.data = new System.Windows.Forms.TextBox(); this.goButton = new System.Windows.Forms.Button(); this.SuspendLayout(); // // addressCaption // this.addressCaption.AutoSize = true; this.addressCaption.Location = new System.Drawing.Point(15, 13); this.addressCaption.Name = "addressCaption"; this.addressCaption.Size = new System.Drawing.Size(41, 13); this.addressCaption.TabIndex = 0; this.addressCaption.Text = "Address"; // // address // this.address.Anchor = ((System.Windows.Forms.AnchorStyles) (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.address.Location = new System.Drawing.Point(16, 28); this.address.Name = "address"; this.address.Size = new System.Drawing.Size(430, 20); this.address.TabIndex = 0; this.address.Text = "http://"; // // data // this.data.Anchor = ((System.Windows.Forms.AnchorStyles) ((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); this.data.Location = new System.Drawing.Point(15, 55); this.data.Multiline = true; this.data.Name = "data"; this.data.ReadOnly = true; this.data.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; this.data.Size = new System.Drawing.Size(496, 320); this.data.TabIndex = 2; // // goButton // this.goButton.Location = new System.Drawing.Point(462, 25); this.goButton.Name = "goButton"; this.goButton.Size = new System.Drawing.Size(49, 23); this.goButton.TabIndex = 1; this.goButton.Text = "Go"; this.goButton.Anchor = ((System.Windows.Forms.AnchorStyles) ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.goButton.Click += new System.EventHandler(this.goButton_Click); // // MainForm // this.AcceptButton = this.goButton; this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(523, 407); this.Controls.Add(this.goButton); this.Controls.Add(this.data); this.Controls.Add(this.address); this.Controls.Add(this.addressCaption); this.Name = "MainForm"; this.Text = "Web Tear"; this.ResumeLayout(false); this.PerformLayout(); } } static class Program { [STAThread] static void Main() { Application.EnableVisualStyles(); Application.Run(new MainForm()); } } }
코드 컴파일
코드 컴파일에 대한 자세한 내용은 코드 컴파일을 참조하십시오.
\bin\debug 폴더(또는 Visual Basic .NET을 사용하는 경우 \bin 폴더)에서 응용 프로그램을 실행합니다. 응용 프로그램은 다음 그림과 유사하게 나타납니다.
작업 3: 사용자 지정 활동 순차 워크플로 만들기에서는 나중에 기반으로 사용하는 기본 순차 워크플로를 만듭니다.
\bin\debug 폴더(또는 Visual Basic .NET을 사용하는 경우 \bin 폴더)에서 응용 프로그램을 실행합니다.
참고 항목
작업
개념
기타 리소스
자습서: 사용자 지정 활동 만들기
Custom Activities
Copyright © 2007 by Microsoft Corporation. All rights reserved.