[2]ワークフロー開始フォームを作成する
ワークフロー開始フォームを追加します。開始フォームを作成することにより、ワークフローの実行時に入力パラメーターを渡すことができます。
ソリューションエクスプローラーで[Workflow1]を右クリックし、[追加]の[新しい項目]をクリックします。表示された[新しい項目の追加]ダイアログボックスで、[ワークフロー開始フォーム]をクリックし、[名前]は既定のままで[追加]ボタンをクリックします(図8)。
作成されたWorkflowInitiationForm1.aspxには、[ワークフローの開始]ボタンと[キャンセル]ボタンが既に配置されています。さらに、コードビハインドのWorkflowInitiationForm1.aspx.csには、ワークフローを開始するロジックのコードが既に含まれています。
WorkflowInitiationForm1.aspxに、リスト1のようにTextBoxコントロールを1つ追加し、[ワークフローの開始]ボタンのテキストを変更します。(太字部分)。
<asp:Content ID="Main" ContentPlaceHolderID="PlaceHolderMain" runat="server">
<asp:TextBox ID="TaskTitleTextBox" runat="server"></asp:TextBox>
<asp:Button ID="StartWorkflow" runat="server" OnClick="StartWorkflow_Click" Text="チェックを依頼する" />
<asp:Button ID="Cancel" runat="server" OnClick="Cancel_Click" Text="キャンセル" />
</asp:Content>
加えて、コードビハインドのWorkflowInitiationForm1.aspx.cs内のGetInitiationDataメソッドを、リスト2のように修正します(太字部分)。
private string GetInitiationData()
{
// TODO: ワークフローに渡される開始データを含む文字列を返します。通常、これは XML 形式です。
return TaskTitleTextBox.Text;
}
生成されたTODOコメントにもあるように、GetInitiationDataメソッドでは、ワークフロー実行時に渡されるパラメーターを文字列で返します。複数のパラメーターをワークフローに渡したい場合には、パラメーターをXML形式にシリアライズして渡すようにします。この場合、ワークフロー側で、XML形式の文字列をデシリアライズしてパラメーターを復元する必要があります。
[3]ワークフローにLogToHistoryListアクティビティを追加する
ワークフローにLogToHistoryListアクティビティを追加します。LogToHistoryListアクティビティは、ワークフローの履歴にログを追加します。
ワークフロー(Workflow1.cs)のデザイン画面を表示します。
ツールボックスから[SharePointワークフロー]内の[LogToHistoryListActivity]を選択し、デザイン画面上の[onWorkflowActivated1]の下にドロップします(図9)。
次に、追加した[logToHistoryListActivity1]を右クリックし[ハンドラーの生成]をクリックすると、logToHistoryListActivity1_MethodInvokingイベントハンドラーが生成されます。このように、WFではMethodInvokingメソッド(イベントハンドラー)を定義することにより、アクティビティ実行時における処理を記述することができます。
生成されたlogToHistoryListActivity1_MethodInvokingイベントハンドラーに、リスト3のようにコードを追加します(太字部分)。
private void logToHistoryListActivity1_MethodInvoking(object sender, EventArgs e)
{
logToHistoryListActivity1.HistoryDescription = workflowProperties.InitiationData;
}
workflowProperties.InitiationDataプロパティには、手順[2]で作成したワークフロー開始フォームのGetInitiationDataメソッドで返される文字列データが格納されています。
このデータをlogToHistoryListActivity1オブジェクトのHistoryDescriptionプロパティに設定することにより、ワークフローの履歴に追加するログの説明を設定します。

![図8 [新しい項目の追加]ダイアログボックス](http://cz-cdn.shoeisha.jp/static/images/article/5960/5960_08_s.gif)