using System; using System.Net; using System.Net.Http; using Elsa.Activities.Email.Activities; using Elsa.Activities.Http.Activities; using Elsa.Activities.MassTransit.Activities; using Elsa.Core.Activities.Primitives; using Elsa.Core.Expressions; using Elsa.Services; using Elsa.Services.Models; using Sample08.Messages; namespace Sample08.Workflows { public class CreateOrderWorkflow : IWorkflow { public void Build(IWorkflowBuilder builder) { builder .StartWith( activity => { activity.Method = HttpMethod.Post.Method; activity.Path = new Uri("/orders", UriKind.RelativeOrAbsolute); activity.ReadContent = true; } ) .Then( activity => { activity.VariableName = "order"; activity.ValueExpression = new JavaScriptExpression("lastResult().ParsedContent"); } ) .Then(activity => { activity.Message = new JavaScriptExpression("return {order: order};"); activity.MessageType = typeof(CreateOrder); } ) .Then( activity => activity.Forks = new[] { "Write-Response", "Await-Shipment" }, fork => { fork .When("Write-Response") .Then( activity => { activity.Body = new PlainTextExpression("

Order Received

Your order has been received. Waiting for shipment.

"); activity.ContentType = new PlainTextExpression("text/html"); activity.StatusCode = HttpStatusCode.Accepted; } ); fork .When("Await-Shipment") .Then(activity => activity.MessageType = typeof(OrderShipped)) .Then( activity => { activity.From = new PlainTextExpression("shipment@acme.com"); activity.To = new JavaScriptExpression("order.customer.email"); activity.Subject = new JavaScriptExpression("`Your order with ID #${order.id} has been shipped!`"); activity.Body = new JavaScriptExpression( "`Dear ${order.customer.name}, your order has shipped!`" ); } ); } ); } } }