Beispiel #1
0
        private void RunGotoActivity(DataTable results = null)
        {
            int    processInstanceId = base.GetIntProperty(Constants.SOProperties.ProcessInstanceManagement.ProcessInstanceId);
            bool   ignoreProcessInstanceNotExists = base.GetBoolProperty(Constants.SOProperties.ProcessInstanceManagement.IgnoreProcessInstanceNotExists);
            string activityName       = base.GetStringProperty(Constants.SOProperties.ProcessInstanceManagement.ActivityName);
            string activitySystemName = String.Empty;
            bool   gotoActivityResult = false;

            WorkflowManagementServer mngServer = this.ServiceBroker.K2Connection.GetConnection <WorkflowManagementServer>();

            using (mngServer.Connection)
            {
                ProcessInstanceCriteriaFilter filter = new ProcessInstanceCriteriaFilter();
                filter.AddRegularFilter(ProcessInstanceFields.ProcInstID, Comparison.Equals, processInstanceId);
                ProcessInstances procInsts = mngServer.GetProcessInstancesAll(filter);
                if (!ignoreProcessInstanceNotExists & procInsts.Count == 0)
                {
                    throw new ApplicationException(String.Format(Resources.ProcessInstanceNotFound, processInstanceId));
                }

                if (procInsts.Count > 0)
                {
                    int procId = procInsts[0].ProcID;
                    processInstanceId = procInsts[0].ID;

                    Activities procActivities = mngServer.GetProcActivities(procId);

                    foreach (Activity act in procActivities)
                    {
                        if (act.DisplayName == activityName || act.Name == activityName)
                        {
                            activitySystemName = act.Name;
                        }
                    }

                    if (string.IsNullOrEmpty(activitySystemName))
                    {
                        throw new ApplicationException(String.Format(Resources.RequiredPropertyNotFound, activityName));
                    }

                    gotoActivityResult = mngServer.GotoActivity(processInstanceId, activitySystemName);
                }
            }
            if (results != null)
            {
                DataRow row = results.NewRow();
                row[Constants.SOProperties.ProcessInstanceManagement.ActivityName]       = activityName + " (" + activitySystemName + ")";
                row[Constants.SOProperties.ProcessInstanceManagement.ProcessInstanceId]  = processInstanceId;
                row[Constants.SOProperties.ProcessInstanceManagement.GoToActivityResult] = gotoActivityResult;
                results.Rows.Add(row);
            }
        }
Beispiel #2
0
        private void ListActivities()
        {
            int  processInstanceId    = base.GetIntProperty(Constants.SOProperties.ProcessInstanceManagement.ProcessInstanceId);
            bool includeStartActivity = base.GetBoolProperty(Constants.SOProperties.ProcessInstanceManagement.IncludeStartActivity);

            ServiceObject serviceObject = base.ServiceBroker.Service.ServiceObjects[0];

            serviceObject.Properties.InitResultTable();
            DataTable results = base.ServiceBroker.ServicePackage.ResultTable;

            WorkflowManagementServer mngServer = new WorkflowManagementServer();

            using (mngServer.CreateConnection())
            {
                mngServer.Open(BaseAPIConnectionString);

                ProcessInstanceCriteriaFilter filter = new ProcessInstanceCriteriaFilter();
                filter.AddRegularFilter(ProcessInstanceFields.ProcInstID, Comparison.Equals, processInstanceId);
                ProcessInstances procInsts = mngServer.GetProcessInstancesAll(filter);
                if (procInsts.Count == 0)
                {
                    throw new ApplicationException(String.Format("Sorry, process instance with id {0} not found.", processInstanceId));
                }

                foreach (Activity actvt in mngServer.GetProcActivities(procInsts[0].ProcID))
                {
                    if (actvt.IsStart && !includeStartActivity)
                    {
                        continue;
                    }
                    DataRow row = results.NewRow();
                    row[Constants.SOProperties.ProcessInstanceManagement.ActivityID]               = actvt.ID;
                    row[Constants.SOProperties.ProcessInstanceManagement.ActivityName]             = actvt.Name;
                    row[Constants.SOProperties.ProcessInstanceManagement.ActivityDescription]      = actvt.Description;
                    row[Constants.SOProperties.ProcessInstanceManagement.ActivityExpectedDuration] = actvt.ExpectedDuration;
                    row[Constants.SOProperties.ProcessInstanceManagement.IsStartActivity]          = actvt.IsStart;
                    row[Constants.SOProperties.ProcessInstanceManagement.ActivityMetaData]         = actvt.MetaData;
                    row[Constants.SOProperties.ProcessInstanceManagement.ActivityPriority]         = actvt.Priority;
                    results.Rows.Add(row);
                }
            }
        }
Beispiel #3
0
        private void GotoActivity()
        {
            int    processInstanceId  = base.GetIntProperty(Constants.SOProperties.ProcessInstanceManagement.ProcessInstanceId);
            string activityName       = base.GetStringProperty(Constants.SOProperties.ProcessInstanceManagement.ActivityName);
            string activitySystemName = String.Empty;

            WorkflowManagementServer mngServer = this.ServiceBroker.K2Connection.GetConnection <WorkflowManagementServer>();

            using (mngServer.Connection)
            {
                ProcessInstanceCriteriaFilter filter = new ProcessInstanceCriteriaFilter();
                filter.AddRegularFilter(ProcessInstanceFields.ProcInstID, Comparison.Equals, processInstanceId);
                ProcessInstances procInsts = mngServer.GetProcessInstancesAll(filter);
                if (procInsts.Count == 0)
                {
                    throw new ApplicationException(String.Format(Resources.ProcessInstanceNotFound, processInstanceId));
                }

                int        procId         = procInsts[0].ProcID;
                Activities procActivities = mngServer.GetProcActivities(procId);

                foreach (Activity act in procActivities)
                {
                    if (act.DisplayName == activityName || act.Name == activityName)
                    {
                        activitySystemName = act.Name;
                    }
                }

                if (string.IsNullOrEmpty(activitySystemName))
                {
                    throw new ApplicationException(String.Format(Resources.RequiredPropertyNotFound, activityName));
                }

                mngServer.GotoActivity(procInsts[0].ID, activitySystemName);
            }
        }
        private void ListActivities()
        {
            int processInstanceId = base.GetIntProperty(Constants.SOProperties.ProcessInstanceManagement.ProcessInstanceId);
            bool includeStartActivity = base.GetBoolProperty(Constants.SOProperties.ProcessInstanceManagement.IncludeStartActivity);

            ServiceObject serviceObject = base.ServiceBroker.Service.ServiceObjects[0];
            serviceObject.Properties.InitResultTable();
            DataTable results = base.ServiceBroker.ServicePackage.ResultTable;

            WorkflowManagementServer mngServer = new WorkflowManagementServer();

            using (mngServer.CreateConnection())
            {
                mngServer.Open(BaseAPIConnectionString);

                ProcessInstanceCriteriaFilter filter = new ProcessInstanceCriteriaFilter();
                filter.AddRegularFilter(ProcessInstanceFields.ProcInstID, Comparison.Equals, processInstanceId);
                ProcessInstances procInsts = mngServer.GetProcessInstancesAll(filter);
                if (procInsts.Count == 0)
                {
                    throw new ApplicationException(String.Format("Sorry, process instance with id {0} not found.", processInstanceId));
                }

                foreach (Activity actvt in mngServer.GetProcActivities(procInsts[0].ProcID))
                {
                    if (actvt.IsStart && !includeStartActivity)
                        continue;
                    DataRow row = results.NewRow();
                    row[Constants.SOProperties.ProcessInstanceManagement.ActivityID] = actvt.ID;
                    row[Constants.SOProperties.ProcessInstanceManagement.ActivityName] = actvt.Name;
                    row[Constants.SOProperties.ProcessInstanceManagement.ActivityDescription] = actvt.Description;
                    row[Constants.SOProperties.ProcessInstanceManagement.ActivityExpectedDuration] = actvt.ExpectedDuration;
                    row[Constants.SOProperties.ProcessInstanceManagement.IsStartActivity] = actvt.IsStart;
                    row[Constants.SOProperties.ProcessInstanceManagement.ActivityMetaData] = actvt.MetaData;
                    row[Constants.SOProperties.ProcessInstanceManagement.ActivityPriority] = actvt.Priority;
                    results.Rows.Add(row);
                }
            }
        }