예제 #1
0
        internal WorkflowDetailsCache(UserDefinedSettings settings, Workflow.Workflow workflow)
        {
            Workflow = workflow;
            Operator = new UpdateOperator(settings);

            Workflow.PostSwitchProject += async(_, mergeRequests) =>
            {
                Trace.TraceInformation("[WorkflowDetailsCache] Processing project switch");

                List <Project> enabledProjects = Workflow.GetProjectsToUpdate();
                Debug.Assert(enabledProjects.Any((x) => x.Id == Workflow.State.Project.Id));

                cacheMergeRequests(Workflow.State.HostName, Workflow.State.Project, mergeRequests);
                await cacheVersionsAsync(Workflow.State.HostName,
                                         InternalDetails.GetMergeRequests(getProjectKey(Workflow.State)));
            };

            Workflow.PostSwitchMergeRequest += async(_) =>
            {
                Trace.TraceInformation("[WorkflowDetailsCache] Processing merge request switch");

                List <Project> enabledProjects = Workflow.GetProjectsToUpdate();
                Debug.Assert(enabledProjects.Any((x) => x.Id == Workflow.State.MergeRequest.Project_Id));

                await cacheVersionsAsync(Workflow.State.HostName, Workflow.State.MergeRequest);
            };
        }
예제 #2
0
        public static Recording FromWorkflow(Workflow.Workflow Flow)
        {
            Recording Rec = FromXml(Flow.Info["RecordingXml"]);

            Rec.WorkflowId = Flow.Id;
            return(Rec);
        }
예제 #3
0
 public TimeTrackingManager(UserDefinedSettings settings, Workflow.Workflow workflow)
 {
     Settings                        = settings;
     TimeTrackingOperator            = new TimeTrackingOperator(Settings);
     workflow.PreLoadSystemNotes    += () => PreLoadTotalTime?.Invoke();
     workflow.FailedLoadSystemNotes += () => FailedLoadTotalTime?.Invoke();
     workflow.PostLoadSystemNotes   +=
         (state, notes) => processSystemNotes(state.MergeRequestDescriptor, state.CurrentUser, notes);
 }
예제 #4
0
        public Workflow.Workflow ToWorkflow()
        {
            List <int> LogIds = new List <int>();

            //LoginAssociations.LogIds
            Workflow.Workflow Flow = new Workflow.Workflow(LoginAssociations.LogIds, "Proxy", this.LoginRequestAsso.DestinationLog.Request.UserAgent, Workflow.WorkflowSource.User, Workflow.WorkflowType.Login);
            Flow.SetInfo("RecordingXml", ToXml());
            Flow.SetName(this.Name);
            return(Flow);
        }
예제 #5
0
        public UpdateManager(Workflow.Workflow workflow, ISynchronizeInvoke synchronizeInvoke,
                             UserDefinedSettings settings)
        {
            Settings = settings;
            Workflow = workflow;
            WorkflowDetailsChecker = new WorkflowDetailsChecker();
            ProjectWatcher         = new ProjectWatcher();
            Cache = new WorkflowDetailsCache(settings, workflow);

            Timer.Elapsed            += onTimer;
            Timer.SynchronizingObject = synchronizeInvoke;
            Timer.Start();
        }
예제 #6
0
        public Window OpenWindow(String windowType, Dictionary <String, Object> parameters)
        {
            Window window = GetWindow(windowType, parameters);

            if (window == null)
            {
                switch (windowType)
                {
                case "Workspace.Authentication": window = new Workspace.Authentication(); break;

                case "Workspace.GlobalSearch": window = new Workspace.GlobalSearch(); break;

                case "Workspace.SessionInformation": window = new Workspace.SessionInformation(); break;

                //case "Enterprise.EnterpriseManagement": window = new Enterprise.EnterpriseManagement (); break;

                //case "Configuration.ConfigurationManagement": window = new Configuration.ConfigurationManagement (); break;

                //case "Configuration.AuthorizedService": window = new Configuration.Windows.AuthorizedService (); break;

                //case "Configuration.Correspondence": window = new Configuration.Windows.Correspondence (); break;

                //case "Configuration.Workflow": window = new Configuration.Windows.Workflow (); break;

                //case "Configuration.WorkTeam": window = new Configuration.Windows.WorkTeam (); break;

                //case "Configuration.WorkOutcome": window = new Configuration.Windows.WorkOutcome (); break;

                //case "Forms.FormDesigner.FormDesigner": window = new Forms.FormDesigner.FormDesigner (); break;

                case "Workflow.Workflow": window = new Workflow.Workflow(); break;

                case "Work.WorkQueueItemDetail": window = new Work.WorkQueueItemDetail(); break;

                case "Member.MemberProfile": window = new Member.MemberProfile(); break;

                default: window = null; break;
                }

                if (window != null)
                {
                    window.OnClose += new EventHandler <EventArgs> (Window_OnClose);

                    window.OnMinimize += new EventHandler <EventArgs> (Window_OnMinimize);

                    window.OnMaximize += new EventHandler <EventArgs> (Window_OnMaximize);

                    window.OnGlobalProgressBarShow += new EventHandler <EventArgs> (Window_OnGlobalProgressBarShow);

                    window.OnGlobalProgressBarHide += new EventHandler <EventArgs> (Window_OnGlobalProgressBarHide);

                    window.Parameters = parameters;

                    windows.Add(window);
                }
            }

            if ((OnWindowActivated != null) && (window != null))
            {
                OnWindowActivated(window, new EventArgs());
            }

            return(window);
        }
예제 #7
0
 public ExpressionResolver(Workflow.Workflow workflow)
 {
     Workflow = workflow;
 }
예제 #8
0
        void DoAnalysisOfRecording()
        {
            try
            {
                Analysis.LogAnalyzer LogAna = new Analysis.LogAnalyzer();
                //Dictionary<string, Analysis.LogAssociations> LoginAssosDict = LogAna.Analyze(RecordingStartLogId, LoginRecordingDoneLogId, "Proxy");
                
                //Check if the last log has been written to the db
                //We wait for max of 10 seconds if it is still not written then we proceed further so that an exception is thrown when processing
                int WaitTime = 0;
                while (WaitTime < 10000)
                {
                    try
                    {
                        Session.FromProxyLog(RecordingCompleteLogId);
                        break;
                    }
                    catch { }
                    Thread.Sleep(1000);
                    WaitTime = WaitTime + 1000;
                }

                Dictionary<string, Analysis.LogAssociations> LoginAssosDict = LogAna.Analyze(RecordingStartLogId, RecordingCompleteLogId, "Proxy");
                List<string> Creds = new List<string>() { Username, Password };
                string CorrectUa = "";
                Analysis.LogAssociations LoginAssos = null;
                foreach (string Ua in LoginAssosDict.Keys)
                {
                    if (LoginAssosDict[Ua].GetAssociationsWithParameterValues(Creds).Count > 0)
                    {
                        CorrectUa = Ua;
                        LoginAssos = LoginAssosDict[Ua];
                        break;
                    }
                }
                if (LoginAssos == null)
                {
                    HandleAnalysisResult(false);
                    return;
                }

                /*
                Dictionary<string, Analysis.LogAssociations> CsrfAssosDict = LogAna.Analyze(LoginRecordingDoneLogId, CsrfParameterRecordingDoneLogId, "Proxy");
                Analysis.LogAssociations CsrfAssos = null;
                if (CsrfAssosDict.ContainsKey(CorrectUa))
                {
                    CsrfAssos = CsrfAssosDict[CorrectUa];
                }
                if (CsrfParameterName.Length > 0 && CsrfAssos == null)
                {
                    HandleAnalysisResult(false);
                    return;
                }
                */
                 
                CurrentRecording = new Recording(LoginAssos, Username, Password, CsrfParameterName);
                if (!CurrentRecording.IsLoginRecordingReplayable())
                {
                    HandleAnalysisResult(false);
                    return;
                }
                CurrentRecording.DoLogin();
                if (CsrfParameterName.Length > 0)
                {
                    string CT = CurrentRecording.GetCsrfToken();
                    if (CT.Length == 0)
                    {
                        HandleAnalysisResult(false);
                        return;
                    }
                }
            }
            catch (ThreadAbortException) { }//Ingore them
            catch (Exception Exp)
            {
                IronException.Report("Error analyzing recording", Exp);
                HandleAnalysisResult(false);
                return;
            }
            Workflow.Workflow Flow = CurrentRecording.ToWorkflow();
            HandleAnalysisResult(true);
        }