Example #1
0
        /// <summary>
        /// Creates the instance.
        /// </summary>
        /// <param name="master">The master.</param>
        /// <returns></returns>
        public override object CreateInstance()
        {
            CreateAssignmentAndWaitResultActivity retVal = new CreateAssignmentAndWaitResultActivity();

            retVal.Name = "createAssignmentAndWait_" + Guid.NewGuid().ToString("N");

            retVal.AssignmentProperties = new PropertyValueCollection();
            retVal.AssignmentProperties.AddRange(this.AssignmentProperties);

            retVal.UseRequest = this.UseRequest;

            if (this.UseRequest)
            {
                retVal.RequestProperties = new PropertyValueCollection();

                if (this.RequestProperties != null)
                {
                    retVal.RequestProperties.AddRange(this.RequestProperties);
                }

                retVal.RequestedUsers = this.RequestedUsers;
            }

            // Copy Properties
            return(retVal);
        }
        /// <summary>
        /// Gets the assignment properties.
        /// </summary>
        /// <param name="activity">The activity.</param>
        /// <returns></returns>
        public static PropertyValueCollection GetAssignmentProperties(object activity)
        {
            CreateAssignmentAndWaitResultActivity root = activity as CreateAssignmentAndWaitResultActivity;

            if (root == null)
            {
                return(null);
            }

            return(root.AssignmentProperties);
        }
Example #3
0
        protected void Page_Load(object sender, EventArgs e)
        {
            Response.Redirect("~/Modules/Pages/WorkflowList.aspx");
            WorkflowDefinitionEntity en = BusinessManager.InitializeEntity<WorkflowDefinitionEntity>(WorkflowDefinitionEntity.ClassName);

            SequentialWorkflowActivity item = McWorkflowSerializer.GetObject<SequentialWorkflowActivity>(en.Xaml);

            CreateAssignmentAndWaitResultActivity act1 = new CreateAssignmentAndWaitResultActivity();
            act1.Name = "Guid1";
            //act1.Subject =" Subject Here " ;
            //a
            //item.Activities.Add(act1);
        }
        /// <summary>
        /// Creates the instance.
        /// </summary>
        /// <param name="master">The master.</param>
        /// <returns></returns>
        public override object CreateInstance()
        {
            CreateAssignmentAndWaitResultActivity retVal = new CreateAssignmentAndWaitResultActivity();
            retVal.Name = "createAssignmentAndWait_"+ Guid.NewGuid().ToString("N");

            retVal.AssignmentProperties = new PropertyValueCollection();
            retVal.AssignmentProperties.AddRange(this.AssignmentProperties);

            retVal.UseRequest = this.UseRequest;

            if (this.UseRequest)
            {
                retVal.RequestProperties = new PropertyValueCollection();

                if(this.RequestProperties!=null)
                    retVal.RequestProperties.AddRange(this.RequestProperties);

                retVal.RequestedUsers = this.RequestedUsers;
            }

            // Copy Properties
            return retVal;
        }
        /// <summary>
        /// Gets the activity user list.
        /// </summary>
        /// <param name="parentActivity">The parent activity.</param>
        /// <returns></returns>
        public static int[] GetActivityUserList(object parentActivity)
        {
            List <int> retVal = new List <int>();

            CompositeActivity compositeActivity = parentActivity as CompositeActivity;

            if (compositeActivity != null)
            {
                foreach (Activity activity in compositeActivity.Activities)
                {
                    CreateAssignmentAndWaitResultActivity cr = activity as CreateAssignmentAndWaitResultActivity;

                    if (cr != null && cr.AssignmentProperties.Contains(AssignmentEntity.FieldUserId))
                    {
                        int?userId = cr.AssignmentProperties[AssignmentEntity.FieldUserId] as int?;

                        if (userId.HasValue && !retVal.Contains(userId.Value))
                        {
                            retVal.Add(userId.Value);
                        }
                    }

                    if (activity is CompositeActivity)
                    {
                        foreach (int userId in GetActivityUserList(activity))
                        {
                            if (!retVal.Contains(userId))
                            {
                                retVal.Add(userId);
                            }
                        }
                    }
                }
            }

            return(retVal.ToArray());
        }
        /// <summary>
        /// Creates the business process activity info.
        /// </summary>
        /// <param name="businessProcess">The business process.</param>
        /// <param name="scope">The scope.</param>
        /// <param name="parentActivity">The parent activity.</param>
        /// <param name="activityInfoItems">The activity info items.</param>
        private static void CreateBusinessProcessActivityInfo(BusinessProcessInfo businessProcess, WorkflowChangesScope scope, EntityObject[] assignments, CompositeActivity parentActivity, ActivityInfoCollection activityInfoItems)
        {
            foreach (Activity activity in parentActivity.Activities)
            {
                if (activity is CreateAssignmentAndWaitResultActivity)
                {
                    CreateAssignmentAndWaitResultActivity asgActivity = (CreateAssignmentAndWaitResultActivity)activity;
                    PropertyValueCollection properties = asgActivity.AssignmentProperties;

                    ActivityInfo activityInfo = new ActivityInfo();
                    activityInfoItems.Add(activityInfo);

                    activityInfo.Name = activity.Name;
                    activityInfo.Type = ActivityType.Assignment;

                    AssignmentEntity assignment = FindAssignmentByActivityName(assignments, activity.Name);

                    if (assignment != null)
                    {
                        activityInfo.State   = (AssignmentState)assignment.State;
                        activityInfo.Subject = assignment.Subject;

                        activityInfo.TimeStatus = (AssignmentTimeStatus?)assignment.TimeStatus;

                        activityInfo.PlanStartDate  = assignment.ActualStartDate;
                        activityInfo.PlanFinishDate = assignment.PlanFinishDate;

                        activityInfo.ActualStartDate  = assignment.ActualStartDate;
                        activityInfo.ActualFinishDate = assignment.ActualFinishDate;
                        activityInfo.Comment          = assignment.Comment;

                        activityInfo.UserId = assignment.UserId;

                        activityInfo.ClosedBy = assignment.ClosedBy;

                        activityInfo.ExecutionResult = (AssignmentExecutionResult?)assignment.ExecutionResult;
                    }
                    else
                    {
                        activityInfo.State = businessProcess.State == BusinessProcessState.Closed?
                                             AssignmentState.Closed:
                                             AssignmentState.Pending;

                        if (asgActivity.AssignmentProperties.Contains(AssignmentEntity.FieldSubject))
                        {
                            activityInfo.Subject = (string)asgActivity.AssignmentProperties[AssignmentEntity.FieldSubject];
                        }

                        if (asgActivity.AssignmentProperties.Contains(AssignmentEntity.FieldUserId))
                        {
                            activityInfo.UserId = (int?)asgActivity.AssignmentProperties[AssignmentEntity.FieldUserId];
                        }

                        // Resolve Plan Time
                        //if (activityInfo.State == AssignmentState.Pending &&
                        //    businessProcess.State == BusinessProcessState.Active &&
                        //    businessProcess.PlanFinishDate.HasValue)
                        //{
                        //    //CalculatePlanFinishDate(businessProcess, parentActivity, activity, activityInfo);
                        //}

                        //if (activityInfo.PlanStartDate.HasValue &&
                        //    activityInfo.PlanStartDate.Value < DateTime.Now)
                        //    activityInfo.TimeStatus = AssignmentTimeStatus.OverStart;

                        //if (activityInfo.PlanFinishDate.HasValue &&
                        //    activityInfo.PlanFinishDate.Value < DateTime.Now)
                        //    activityInfo.TimeStatus = AssignmentTimeStatus.OverDue;
                    }


                    // 2008-07-07 Added Assignment Properties
                    activityInfo.AssignmentProperties.AddRange(asgActivity.AssignmentProperties);
                    //
                }
                else if (activity is BlockActivity)
                {
                    // Create Block Info
                    ActivityInfo blockInfo = new ActivityInfo();
                    activityInfoItems.Add(blockInfo);

                    blockInfo.Name = activity.Name;
                    blockInfo.Type = ActivityType.Block;

                    blockInfo.State = businessProcess.State == BusinessProcessState.Closed ?
                                      AssignmentState.Closed :
                                      AssignmentState.Pending;

                    CreateBusinessProcessActivityInfo(businessProcess, scope, assignments, (BlockActivity)activity, blockInfo.Activities);

                    if (blockInfo.State == AssignmentState.Pending)
                    {
                        if (blockInfo.Activities.Count > 0)
                        {
                            foreach (ActivityInfo childActivitiInfo in blockInfo.Activities)
                            {
                                if (childActivitiInfo.State == AssignmentState.Active)
                                {
                                    blockInfo.State = AssignmentState.Active;
                                    break;
                                }
                                else if (childActivitiInfo.State == AssignmentState.Closed)
                                {
                                    blockInfo.State = AssignmentState.Closed;
                                }
                            }
                        }
                        else
                        {
                            int blockIndex = activityInfoItems.IndexOf(blockInfo);

                            if (blockIndex == 0)
                            {
                                blockInfo.State = AssignmentState.Closed;
                            }
                            else
                            {
                                blockInfo.State = activityInfoItems[blockIndex - 1].State == AssignmentState.Active? AssignmentState.Pending:
                                                  activityInfoItems[blockIndex - 1].State;
                            }
                        }
                    }

                    if (blockInfo.Activities.Count > 0 &&
                        (blockInfo.State == AssignmentState.Active ||
                         blockInfo.State == AssignmentState.Closed))
                    {
                        blockInfo.PlanStartDate  = blockInfo.Activities[0].PlanStartDate;
                        blockInfo.PlanFinishDate = blockInfo.Activities[0].PlanFinishDate;
                    }
                }
            }
        }
Example #7
0
        void btnCreate_Click(object sender, EventArgs e)
        {
            //throw new NotImplementedException();
            SequentialWorkflowActivity root = this.CurrentContainer.CurrentRootActivity;
            Activity ac = root.GetActivityByName(CurrentActivity.Name);

            CreateAssignmentAndWaitResultActivity newAct = new CreateAssignmentAndWaitResultActivity();
            newAct.Name = String.Format("test dvs {0}", Guid.NewGuid().ToString("N"));
            //newAct.Subject = " Subject Here ";

            if (ac.Parent != null || ac is System.Workflow.ComponentModel.CompositeActivity)
            {
                ((System.Workflow.ComponentModel.CompositeActivity)ac).Activities.Add(newAct);
            }
            else
            {
                root.Activities.Add(newAct);
            }

            CurrentContainer.CurrentRootActivity = root;

            this.CurrentContainer.PerformControls();
        }