private static async Task CreateOrderSample(string fileName, string promoCode)
        {
            Console.WriteLine("Uploading file...");

            var recordingId = await OrderWorkflow.UploadFile(fileName);

            Console.WriteLine($"File uploaded: Recording Id: {recordingId}");
            Console.WriteLine("Creaating order...");

            var orderId = await OrderWorkflow.CreateOrder(recordingId);

            Console.WriteLine($"Order created. Order Id: {orderId}");
            Console.WriteLine("Setting promocode...");

            await OrderWorkflow.SetPromoCode(orderId, promoCode);

            Console.WriteLine("Updating order settings!");

            await OrderWorkflow.UpdateSettings(orderId);

            Console.WriteLine("Placing order...");
            await OrderWorkflow.PlaceOrder(orderId);

            Console.WriteLine("Order creation complete!");
        }
        public void GetWorkFlowAsDotGraph()
        {
            var workflow = new OrderWorkflow();

            Console.Write(workflow.ToDotGraph());

            //The output json can be visualized by a dot graph visualizer, for instance http://www.webgraphviz.com/
        }
Ejemplo n.º 3
0
Archivo: Program.cs Proyecto: mpasz/C-
        static void Main(string[] args)
        {
            var purchasePanel = new PurchasesPanel();
            var orderWorkflow = new OrderWorkflow();

            //purchasePanel.Run(new PurchaseOrderRequest());
            //purchasePanel.Run(new PurchaseOrderStatus());
            //purchasePanel.RegisterOrderStatus(new PurchaseRequestStatus());


            purchasePanel.Run(orderWorkflow);
        }
        private static async Task GetOrderResultSample(string recordingId, string format, string outputFile)
        {
            Console.WriteLine("Checking file status...");
            var status = await OrderWorkflow.CheckOrderStatus(recordingId);

            if (status == 3)
            {
                Console.WriteLine("Downloading result...");
                await OrderWorkflow.GetResult(recordingId, format, outputFile);
            }
            else
            {
                Console.WriteLine("File not ready yet!");
            }
        }
        private static async Task MainAsync()
        {
            Console.WriteLine("Initializing services...");

            await OrderWorkflow.InitializeServices();

            const string FileName  = "";
            const string PromoCode = "";

            await CreateOrderSample(FileName, PromoCode);

            //const string RecordingId = "";
            //const string Format = "pdf";
            //const string OutputFile = "output.pdf";

            //await GetOrderResultSample(RecordingId, Format, OutputFile);
        }
Ejemplo n.º 6
0
        public async Task Wait_for_a_signal_to_reschedule()
        {
            var    @event   = new AutoResetEvent(false);
            var    workflow = new OrderWorkflow(@event);
            string result   = null;

            workflow.Completed += (s, e) => { result = e.Result; @event.Set(); };
            _workflowHost       = await HostAsync(workflow);

            var workflowId = await _domain.StartWorkflow <OrderWorkflow>("input", _taskListName);

            @event.WaitOne();

            await _domain.SendSignal(workflowId, "ItemsArrived", "");

            @event.WaitOne();

            Assert.That(result, Is.EqualTo("Charged"));
        }
Ejemplo n.º 7
0
        public void Reschedule_the_waiting_item_on_signal()
        {
            var id    = Identity.Lambda("ReserveOrder").ScheduleId();
            var graph = _graphBuilder.LambdaCompletedEventGraph(id, "input", "result");

            _builder.AddProcessedEvents(graph);
            _builder.AddProcessedEvents(_graphBuilder.WaitForSignalEvent(id, graph.First().EventId, new[] { "ItemsArrived" }, SignalWaitType.Any, SignalNextAction.Reschedule));
            var s = _graphBuilder.WorkflowSignaledEvent("ItemsArrived", "");

            _builder.AddNewEvents(s);

            var workflow = new OrderWorkflow();
            var decision = workflow.Decisions(_builder.Result());

            Assert.That(decision, Is.EquivalentTo(new WorkflowDecision[]
            {
                new ScheduleLambdaDecision(id, "input"),
                new WorkflowItemSignalledDecision(id, graph.First().EventId, "ItemsArrived", s.EventId),
            }));
        }
Ejemplo n.º 8
0
        public void Can_wait_to_reschedule_on_signal()
        {
            var id    = Identity.Lambda("ReserveOrder").ScheduleId();
            var graph = _graphBuilder.LambdaFailedEventGraph(id, "input", "r", "d");

            _builder.AddNewEvents(graph);

            var workflow = new OrderWorkflow();
            var decision = workflow.Decisions(_builder.Result());

            Assert.That(decision, Is.EquivalentTo(new []
            {
                new WaitForSignalsDecision(new WaitForSignalData {
                    ScheduleId = id, TriggerEventId = graph.First().EventId
                }),
            }));
            var swfData = decision.First().SwfDecision().RecordMarkerDecisionAttributes.Details.AsDynamic();

            Assert.That((SignalNextAction)swfData.NextAction, Is.EqualTo(SignalNextAction.Reschedule));
        }
Ejemplo n.º 9
0
        private void Next()
        {
            _StatusMessage = "Checking for new orders...";
            if (_Controller.Next())
            {

                _StatusMessage = "New order found, running workflow...";
                _Errors = 0;
                _State = StateType.Running;
                _Workflow = new OrderWorkflow(_WB, _Controller.Order);
                _Workflow.Start();
            }
            else
            {
                _StatusMessage = "No pending orders.";
            }
        }
Ejemplo n.º 10
0
 private void Errored()
 {
     if (!Http.isConnected())
     {
         _Parent.IsConnected = false;
         _State = StateType.DisconnectedDuringWorkflow;
     }
     else
     {
         _Errors++;
         if (_Errors > 2)
         {
             ReturnErroredAccount();
         }
         else
         {
             _Workflow = new OrderWorkflow(_WB, _Controller.Order);
             _Workflow.Start();
         }
     }
 }