/// <summary> /// Creates the instance. /// </summary> /// <param name="master">The master.</param> /// <returns></returns> public override object CreateInstance() { BlockActivity retVal = new BlockActivity(); retVal.Name = "blockActivity_" + Guid.NewGuid().ToString("N"); retVal.Type = this.CompletionType; return retVal; }
/// <summary> /// Creates the instance. /// </summary> /// <param name="master">The master.</param> /// <returns></returns> public override object CreateInstance() { BlockActivity retVal = new BlockActivity(); retVal.Name = "blockActivity_" + Guid.NewGuid().ToString("N"); retVal.Type = this.CompletionType; return(retVal); }
/// <summary> /// Sets the type of the block activity. /// </summary> /// <param name="activity">The activity.</param> /// <param name="type">The type.</param> public static void SetBlockActivityType(object activity, BlockActivityType type) { BlockActivity block = activity as BlockActivity; if (block == null) { throw new ArgumentException("The activity should be CompositeActivity.", "activity"); } block.Type = type; }
/// <summary> /// Gets the type of the block activity. /// </summary> /// <param name="activity">The activity.</param> /// <returns></returns> public static BlockActivityType GetBlockActivityType(object activity) { BlockActivity block = activity as BlockActivity; if (block == null) { throw new ArgumentException("The activity should be CompositeActivity.", "activity"); } return(block.Type); }
public static DataTable GetChildActivityList(WorkflowDescription wfDescription, object activity) { DataTable dt = new DataTable(); dt.Locale = CultureInfo.InvariantCulture; dt.Columns.Add("Id", typeof(string)); dt.Columns.Add("Number", typeof(int)); dt.Columns.Add("Subject", typeof(string)); dt.Columns.Add("User", typeof(int)); dt.Columns.Add("DueDate", typeof(DateTime)); dt.Columns.Add("State", typeof(ActivityStatus)); dt.Columns.Add("IsBlock", typeof(bool)); dt.Columns.Add("ReadOnlyLibraryAccess", typeof(bool)); if (activity is SequentialWorkflowActivity) { SequentialWorkflowActivity block = (SequentialWorkflowActivity)activity; foreach (Activity child in block.Activities) { ProcessChildActivity(wfDescription, child, dt); } } else if (activity is StateMachineWorkflowActivity) { StateMachineWorkflowActivity block = (StateMachineWorkflowActivity)activity; foreach (Activity child in block.Activities) { ProcessChildActivity(wfDescription, child, dt); } } else if (activity is BlockActivity) { BlockActivity block = (BlockActivity)activity; foreach (Activity child in block.Activities) { ProcessChildActivity(wfDescription, child, dt); } } return(dt); }
void IActivityEventListener <ActivityExecutionStatusChangedEventArgs> .OnEvent(object sender, ActivityExecutionStatusChangedEventArgs e) { if (sender == null) { throw new ArgumentNullException("sender"); } if (e == null) { throw new ArgumentNullException("e"); } ActivityExecutionContext context = sender as ActivityExecutionContext; if (context == null) { throw new ArgumentException("Sender must be ActivityExecutionContext", "sender"); } BlockActivity activity = context.Activity as BlockActivity; e.Activity.UnregisterForStatusChange(Activity.ClosedEvent, this); ActivityExecutionStatus result = ActivityExecutionStatus.Initialized; switch (this.Type) { case BlockActivityType.All: result = ProcessClosedEvenForAllActivities(context, e.Activity); break; case BlockActivityType.Any: result = ProcessClosedEvenForAnyActivities(context, e.Activity); break; default: throw new ArgumentOutOfRangeException("Unknown Type"); } if (result == ActivityExecutionStatus.Closed) { context.CloseActivity(); } }
private static void ProcessActivity(WorkflowDescription wfDescription, Activity activity, DataTable dt, int level) { DataRow row = dt.NewRow(); row["Id"] = activity.QualifiedName; row["Number"] = dt.Rows.Count + 1; if (activity is SequentialWorkflowActivity) { row["Subject"] = wfDescription.Name; row["IsBlock"] = true; } else if (activity is StateMachineWorkflowActivity) { row["Subject"] = wfDescription.Name; row["IsBlock"] = true; } else if (activity is BlockActivity) { if (((BlockActivity)activity).Type == BlockActivityType.All) { row["Subject"] = "{IbnFramework.BusinessProcess:BlockActivityTypeAll}"; } else { row["Subject"] = "{IbnFramework.BusinessProcess:BlockActivityTypeAny}"; } row["IsBlock"] = true; } else if (activity is CreateAssignmentAndWaitResultActivity) { PropertyValueCollection properties = ((CreateAssignmentAndWaitResultActivity)activity).AssignmentProperties; row["Subject"] = properties[AssignmentEntity.FieldSubject].ToString(); row["User"] = (int)properties[AssignmentEntity.FieldUserId]; if (properties[AssignmentEntity.FieldPlanFinishDate] != null) { row["DueDate"] = (DateTime)properties[AssignmentEntity.FieldPlanFinishDate]; } row["IsBlock"] = false; } if (row["Subject"] == DBNull.Value) { row["Subject"] = "{IbnFramework.BusinessProcess:NoSubject}"; } row["State"] = GetActivityStatus(wfDescription, activity); row["Level"] = level; dt.Rows.Add(row); level++; if (activity is SequentialWorkflowActivity) { SequentialWorkflowActivity block = (SequentialWorkflowActivity)activity; foreach (Activity child in block.Activities) { ProcessActivity(wfDescription, child, dt, level); } } else if (activity is StateMachineWorkflowActivity) { StateMachineWorkflowActivity block = (StateMachineWorkflowActivity)activity; foreach (Activity child in block.Activities) { ProcessActivity(wfDescription, child, dt, level); } } else if (activity is BlockActivity) { BlockActivity block = (BlockActivity)activity; foreach (Activity child in block.Activities) { ProcessActivity(wfDescription, child, dt, level); } } }