sharepoint 2010 の visualstudio 2010 で承認ワークフローを作成しています。ワークフローは最初にタスクを作成し、タスクの承認を待ちます。しかし、タスクが承認されているかどうかを確認する方法は?
おそらく、私のセバリオをもう少し詳しく説明します。
- 追加後にレビューが必要な項目のリストがあります。
- 彼らが承認されるか拒否されるかは絶対的な決定であり、決して変更されるべきではありません
- アイテムが承認されると、いくつかの機能が起動されます
- 拒否された場合は、メールを送信する必要があります。
私のアイデア:
アイデア - ワークフロー:
私の最初のアイデアは、ListItemd が追加された後に起動されるワークフローを作成することでした。WF は、レビュー可能なタスクを作成する必要があります。正の場合、いくつかの機能を起動し、それ自体を削除する必要があります。
アイデア - ワークフローの設計:
アイデア - ワークフロー コード:
public Guid workflowId = default(System.Guid);
public SPWorkflowActivationProperties workflowProperties = new SPWorkflowActivationProperties();
// these properties are for the workflow task that will be created.
public SPWorkflowTaskProperties CreateTaskApproval_TaskProperties = new SPWorkflowTaskProperties();
public SPWorkflowTaskProperties CreateTaskApproval_AffterTaskProperties = new SPWorkflowTaskProperties();
public SPWorkflowTaskProperties CreateTaskApproval_BeforeTaskProperties = new SPWorkflowTaskProperties();
public String CreateTaskApproval_ContentTypeId = default(System.String);
public Int32 CreateTaskApproval_ListItemId = default(System.Int32);
public Guid CreateTaskApproval_TaskId = default(System.Guid);
private void createTask1_MethodInvoking(object sender, EventArgs e)
{
createTask1.TaskId = new Guid();
// Now create the approval task.
// Set up some of the properties.
CreateTaskApproval_TaskId = Guid.NewGuid();
//Setting the task properties
CreateTaskApproval_TaskProperties.Title = "TestTitle"
CreateTaskApproval_TaskProperties.Description = "Description";
CreateTaskApproval_TaskProperties.AssignedTo = @"testemail\testuser";
CreateTaskApproval_TaskProperties.SendEmailNotification = false;
CreateTaskApproval_TaskProperties.TaskType = 1;
LogComment("Request Task Created.");
}
private void onTaskChanged1_Invoked(object sender, ExternalDataEventArgs e)
{
try
{
//!!!! The Problem is here at Status
// Check to make sure the field is there on the item.
if (CreateTaskApproval_TaskProperties.ExtendedProperties["Status"] != null)
{
// Evaluate the value of the field.
if (CreateTaskApproval_TaskProperties.ExtendedProperties["Status"].ToString() == "Approved" || CreateTaskApproval_TaskProperties.ExtendedProperties["Status"].ToString() == "Declined")
{
TaskApproval_ApproveComplete = true;
}
else
{
TaskApproval_ApproveComplete = false;
}
}
else
{
// This should never happen because there is a default, but always good just in case.
TaskApproval_ApproveComplete = false;
}
}
catch (Exception ex)
{
TaskApproval_ApproveComplete = false;
LogComment(ex.ToString());
}
}
private void completeTask1_MethodInvoking(object sender, EventArgs e)
{
workflowProperties.Item.ModerationInformation.Status = SPModerationStatusType.Approved;
//Fire some code
}
アイデア - ワークフロー - 問題: タスクのモデレーション ステータスをまったく取得できません。(「承認済み」など)
CreateTaskApproval_TaskProperties.ExtendedProperties["Status"]
方法を知っている人はいますか?