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/ }
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); }
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")); }
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), })); }
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)); }
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."; } }
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(); } } }