new string[] { "ProcessInstanceId", "ProcessSetId", "ProcessId", "ExecutingProcessId", "FullName", "Folio", "Originator", "Status", "ExpectedDuraction", "StartDate", "FinishDate", "Priority", "ResultStatus", "ResultMessage" })] // , "IsDefaultVersion", "VersionDate", "VersionDescription", "VersionLabel", "VersionNumber"
        public LIM.ProcessInstance GetProcessInstance()
        {
            WorkflowManagementServer svr = new WorkflowManagementServer("localhost", 5555);
            try
            {
                svr.Open();
                ProcessInstances instances = null;

                SourceCode.Workflow.Management.Criteria.ProcessInstanceCriteriaFilter filter = new SourceCode.Workflow.Management.Criteria.ProcessInstanceCriteriaFilter();
                filter.AddRegularFilter(ProcessInstanceFields.ProcInstID, SourceCode.Workflow.Management.Criteria.Comparison.Equals, this.ProcessInstanceId);

                instances = svr.GetProcessInstancesAll(filter);

                if (instances != null & instances.Count > 0)
                {
                    this.ExecutingProcessId = instances[0].ExecutingProcID;
                    this.ExpectedDuration = instances[0].ExpectedDuration;
                    this.FinishDate = instances[0].FinishDate;
                    this.Folio = instances[0].Folio;
                    this.FullName = instances[0].ProcSetFullName;
                    //this.IsDefaultVersion = instances[0].Process.DefaultVersion;
                    //this.Name = instances[0].Process.FullName;
                    this.Originator = instances[0].Originator;
                    this.Priority = instances[0].Priority;
                    this.ProcessId = instances[0].ProcID;
                    this.ProcessInstanceId = instances[0].ID;
                    this.ProcessSetId = instances[0].ProcSetID;
                    this.StartDate = instances[0].StartDate;
                    this.Status = instances[0].Status;
                    //this.VersionDescription = instances[0].Process.VersionDesc;
                    //this.VersionDate = instances[0].Process.VersionDate;
                    //this.VersionLabel = instances[0].Process.VersionLabel;
                    //this.VersionNumber = instances[0].Process.VersionNumber;
                }
            }
            catch (Exception ex)
            {
                this.ResultStatus = "Exception";
                this.ResultMessage = ex.GetBaseException().Message;
                return this;
            }
            finally
            {
                try
                {
                    svr.Connection.Close();
                    svr.Connection.Dispose();
                }
                catch { }

                svr = null;
            }

            return this;
        }
        new string[] { "ProcessInstanceId", "ProcessSetId", "ProcessId", "ExecutingProcessId", "FullName", "Name", "Folio", "Originator", "Status", "ExpectedDuraction", "StartDate", "FinishDate", "Priority" })] // , "IsDefaultVersion", "VersionDate", "VersionDescription", "VersionLabel", "VersionNumber"
        public List<LIM.ProcessInstance> GetRunningProcessInstanceByVersion()
        {
            List<LIM.ProcessInstance> results = new List<ProcessInstance>();

            WorkflowManagementServer svr = new WorkflowManagementServer("localhost", 5555);
            try
            {
                svr.Open();
                ProcessInstances instances = null;

                SourceCode.Workflow.Management.Criteria.ProcessInstanceCriteriaFilter filter = new SourceCode.Workflow.Management.Criteria.ProcessInstanceCriteriaFilter();
                filter.AddRegularFilter(ProcessInstanceFields.ProcID, SourceCode.Workflow.Management.Criteria.Comparison.Equals, this.ProcessId);

                instances = svr.GetProcessInstancesAll(filter);

                for (int i = 0; i < instances.Count; i++)
                {
                    LIM.ProcessInstance pi = new ProcessInstance();

                    pi.ExecutingProcessId = instances[i].ExecutingProcID;
                    pi.ExpectedDuration = instances[i].ExpectedDuration;
                    pi.FinishDate = instances[i].FinishDate;
                    pi.Folio = instances[i].Folio;
                    pi.FullName = instances[i].ProcSetFullName;
                    //pi.IsDefaultVersion = instances[i].Process.DefaultVersion;
                    //pi.Name = instances[i].Process.FullName;
                    pi.Originator = instances[i].Originator;
                    pi.Priority = instances[i].Priority;
                    pi.ProcessId = instances[i].ProcID;
                    pi.ProcessInstanceId = instances[i].ID;
                    pi.ProcessSetId = instances[i].ProcSetID;
                    pi.StartDate = instances[i].StartDate;
                    pi.Status = instances[i].Status;
                    //pi.VersionDescription = instances[i].Process.VersionDesc;
                    //pi.VersionDate = instances[i].Process.VersionDate;
                    //pi.VersionLabel = instances[i].Process.VersionLabel;
                    //pi.VersionNumber = instances[i].Process.VersionNumber;

                    results.Add(pi);
                }
            }
            catch (Exception ex)
            {
                //this.ResultStatus = "Exception";
                //this.ResultMessage = ex.GetBaseException().Message;
                //return this;
            }
            finally
            {
                try
                {
                    svr.Connection.Close();
                    svr.Connection.Dispose();
                }
                catch { }

                svr = null;
            }

            return results;
        }