public WorkFlowInstanceList GetWorkFlowInstances() { //WindowsPrincipal principal = (WindowsPrincipal)Thread.CurrentPrincipal; //WindowsIdentity identity = (WindowsIdentity)principal.Identity; //TrackingLog.Log(identity.Name); WorkFlowInstanceList l = new WorkFlowInstanceList(); try { TrackingDataContext dataContext = new TrackingDataContext(); IQueryable <CommonResource.Tracking> trackingQuery = from tracking in dataContext.Trackings select tracking; foreach (CommonResource.Tracking t in trackingQuery) { using (TrackingWorkFlowInteraction interaction = new TrackingWorkFlowInteraction()) { WorkFlowInstance wfi = new WorkFlowInstance(); wfi.BugId = t.bugid; wfi.Id = t.wfinstanceid.ToString(); wfi.Title = t.title; wfi.WFName = t.wfname; wfi.LastModified = t.lastmodified.ToString(); wfi.QFEStatus = t.qfestatus; wfi.AssignedTo = t.assignedto; wfi.LastModified = t.lastmodified == null ? "N/A" : t.lastmodified.Value.ToString(); wfi.LastModifiedBy = t.lastmodifiedby; // //List<string> candiCmds = interaction.getCandidateCommands(t.wfname.Trim(), t.wfinstanceid.ToString()); //CandidateCommandList ccl = new CandidateCommandList(); //if (candiCmds != null) //{ // foreach (string cmd in candiCmds) // { // ccl.Add(cmd); // } //} //wfi.CandidateCommandList = ccl; l.Add(wfi); } } } catch (Exception e) { TrackingLog.Log(e.ToString() + "!!" + e.Message); } return(l); }
public WorkFlowInstance GetWorkFlowInstance(string InstanceId) { WorkFlowInstance wfi = new WorkFlowInstance(); wfi.Id = InstanceId; try { TrackingDataContext trackingContext = new TrackingDataContext(); Guid guid = new Guid(InstanceId); IQueryable <CommonResource.Tracking> trackingQuery = from tracking in trackingContext.Trackings where ((tracking.wfinstanceid == guid)) select tracking; foreach (CommonResource.Tracking t in trackingQuery) { using (TrackingWorkFlowInteraction twfi = new TrackingWorkFlowInteraction()) { wfi = new WorkFlowInstance(); wfi.BugId = t.bugid; wfi.Id = t.wfinstanceid.ToString(); wfi.Title = t.title; wfi.WFName = t.wfname; //wfi.LastModified = t.lastmodified==null?"N/A":t.lastmodified.ToString(); wfi.LastModified = t.lastmodified == null ? "N/A" : t.lastmodified.ToString(); wfi.QFEStatus = t.qfestatus; wfi.AssignedTo = t.assignedto; wfi.LastModifiedBy = t.lastmodifiedby; try { CandidateCommandList ccl = twfi.getCandidateCommands(t.wfname.Trim(), InstanceId); wfi.CandidateCommandList = ccl; } catch (WorkFlowNotFoundException e) { } } return(wfi); } } catch (Exception e) { throw new WebFaultException <string>(e.ToString(), HttpStatusCode.InternalServerError); } return(null); }
public CommandInfo doCommand(CommandInfo CommandInfo) { CommandInfo.CommandName = CommandInfo.CommandName.Trim(); try { CommandInteraction cmdInteraction = new CommandInteraction(); Dictionary <string, string> paras = new Dictionary <string, string>(); paras.Add("InstanceId", CommandInfo.InstanceId); paras.Add("WFName", CommandInfo.WFName); if (CommandInfo.ParameterList != null) { foreach (Parameter p in CommandInfo.ParameterList) { paras.Add(p.Name, p.Value); } } TrackingDataContext tdc = new TrackingDataContext(); Guid guid = new Guid(CommandInfo.InstanceId); IQueryable <CommonResource.Tracking> trackingQuery = from tracking in tdc.Trackings where ((tracking.wfinstanceid == guid)) select tracking; foreach (CommonResource.Tracking t in trackingQuery) { t.lastmodifiedby = AuthenticationHelper.GetCurrentUser(); } //CommonResource.Tracking t = new CommonResource.Tracking(); //t.wfname = this.WFName; //t.bugid = bugId; //t.wfinstanceid = new Guid(this.InstanceId); //tdc.Trackings.InsertOnSubmit(t); tdc.SubmitChanges(); cmdInteraction.executeCommand(CommandInfo.CommandName, paras); //this is do the real action in extension TrackingWorkFlowInteraction twfi = new TrackingWorkFlowInteraction(); twfi.doCommand(CommandInfo); // this is just trigger the state machine(WF) to do one step } catch (Exception e) { throw new WebFaultException <string>(e.ToString(), HttpStatusCode.InternalServerError); } return(CommandInfo); }
public WorkFlowInstance GetWorkFlowInstance(string InstanceId) { WorkFlowInstance wfi = new WorkFlowInstance(); TrackingDataContext trackingContext = new TrackingDataContext(); Guid guid = new Guid(InstanceId); IQueryable <Tracking> trackingQuery = from tracking in trackingContext.Trackings where ((tracking.wfinstanceid == guid)) select tracking; foreach (Tracking t in trackingQuery) { TrackingWorkFlowInteraction twfi = new TrackingWorkFlowInteraction(); wfi = new WorkFlowInstance(); List <string> candCmds = twfi.getCandidateCommands(t.wfname, InstanceId); CandidateCommandList ccl = new CandidateCommandList(); ccl.AddRange(candCmds); wfi.CandidateCommandList = ccl; return(wfi); } return(null); }