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); } }
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); } } }
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); } } }