コード例 #1
0
 public bool AuthenticateUser(string userID, string password)
 {
     return(WorkflowHandler.AuthenticateUser(userID, password));
 }
コード例 #2
0
        private static WorkflowManagement BuildWorkflowManagers(ConnectionMultiplexer mux, TaskHandler th, WorkflowHandler wh, EventHandler <Exception> eh)
        {
            var wm = new WorkflowManagement(mux, th, wh, new WorkflowManagementId("sampleApp"), eh);

            var extraProcessors = new List <WorkflowManagement>();

            for (int i = 0; i < 10; i++)
            {
                extraProcessors.Add(new WorkflowManagement(mux, th, wh, new WorkflowManagementId("processor-" + i), eh));
            }

            return(wm);
        }
コード例 #3
0
        internal void Run(string[] args)
        {
            int  workflows = 100000;
            bool pushDone  = false;
            int  completed = 0;
            var  countLock = new object();
            var  allDone   = new ManualResetEvent(false);

            var completionEvents     = new List <DateTime>();
            var submittedQueueLength = new List <Tuple <DateTime, string> >();
            var runningSetLength     = new List <Tuple <DateTime, string> >();

            var mux = ConnectMultiplexer();

            var db = ConnectAndFlushDatabase(mux);

            var eh = CreateEventHandler(allDone);

            var th = CreateTaskHandler();

            var wh = new WorkflowHandler();

            wh.WorkflowComplete += (s, id) => { lock (countLock) { completed++; Console.Write("pushDone: " + pushDone + " done: " + completed + "\r"); completionEvents.Add(DateTime.Now); if (completed == workflows)
                                                                   {
                                                                       allDone.Set();
                                                                   }
                                                } };
            wh.WorkflowFailed += (s, id) => { lock (countLock) { completed++; Console.Write("pushDone: " + pushDone + " done: " + completed + "\r"); completionEvents.Add(DateTime.Now); if (completed == workflows)
                                                                 {
                                                                     allDone.Set();
                                                                 }
                                              } };

            CreateQueueLengthSampler(submittedQueueLength, runningSetLength, db);

            var wm = BuildWorkflowManagers(mux, th, wh, eh);

            var workflow = CreateTestWorkflow();

            var startTime = DateTime.Now;

            for (int i = 0; i < workflows; i++)
            {
                var id = wm.PushWorkflow(workflow);
            }

            var pushDuration = new TimeSpan(DateTime.Now.Ticks - startTime.Ticks);

            pushDone = true;

            WaitHandle.WaitAny(new[] { allDone });

            var duration = new TimeSpan(DateTime.Now.Ticks - startTime.Ticks);

            Console.WriteLine("Done, {0} in {1} ms (push took {2} ms, {3} per second) tasks: {4} churn: {5} tasks per second", workflows, duration.TotalMilliseconds, pushDuration.TotalMilliseconds, workflows / pushDuration.TotalSeconds, workflows * 9, workflows * 9 / duration.TotalSeconds);

            Console.Write("Saving data .. ");

            ExportQueueLengths(submittedQueueLength, runningSetLength, startTime);

            ExportFinalWorkflowCompletion(completionEvents, startTime);

            ExportWorkflowCompletion(workflows, wm, startTime);

            ExportTaskData(workflows, wm, startTime);

            Console.WriteLine("done");

            Console.ReadLine();

            db.ScriptEvaluate("redis.call(\"flushdb\")"); // TODO need to look at timeouts
        }
コード例 #4
0
 //同 public SectionChief(WorkflowHandler nextHandler): base()
 public SectionChief(WorkflowHandler nextHandler)
 {
     Supervisor = nextHandler;
 }