This topic describes how you can work with validation services and processors, in replacement of workflows and activities that were obsoleted with Optimizely Commerce version 14.
How it works
In Optimizely Commerce, activity flows were used for validation and calculating totals in the checkout process. An activity flow is a container of steps, or activities, which can be executed. When executing an activity flow, a list of configured activities and if/else conditions is executed.
Activities can be replaced by the following validation service and processors:
- OrderValidationService
- IPurchaseOrderProcessor
- IPaymentPlanProcessor
- IShipmentProcessor
- IPlacedPriceProcessor
- IInventoryProcessor
- IPaymentProcessor
- Order total calculators
These components mentioned here are available in the EPiServer.Commerce.Order and EPiServer.Commerce.Order.Calculator namespaces.
Activity flows
- CartValidateActivityFlow
Use OrderValidationService.ValidateOrder() instead. - CartPrepareActivityFlow
Use OrderValidationService.ValidateOrder() and OrderGroupExtensions.CalculateTotals() instead. - CartCheckoutActivityFlow
Use OrderValidationService.ValidateOrder() and OrderGroupExtensions.CalculateTotals() instead.
Example Commerce 14 and higher:
CartBuilder ch = new CartBuilder();
foreach (VariationContent entry in entries)
{
ch.AddEntry(entry, quantity, false);
}
ch.Cart.ProviderId = "FrontEnd";
OrderValidationService.ValidateOrder(ch.Cart);
ch.Cart.AcceptChanges();
Example Commerce 10-13:
CartBuilder ch = new CartBuilder();
foreach (VariationContent entry in entries)
{
ch.AddEntry(entry, quantity, false);
}
ch.Cart.ProviderId = "FrontEnd";
ch.RunWorkflow(OrderGroupWorkflowManager.CartValidateWorkflowName);
ch.Cart.AcceptChanges();
Activities
- AdjustInventoryActivity
Use IOrderGroupExtensions.AdjustInventoryOrRemoveLineItems() instead. - CalculateDiscountsActivity
Use IOrderGroupExtensions.ApplyDiscounts() and IOrderGroupExtensions.UpdateInventoryOrRemoveLineItems() instead. - CalculateTotalsActivity
Use IOrderGroupExtensions.CalculateTotals() instead. - CheckInventoryActivity
Use IOrderGroupExtensions.UpdateInventoryOrRemoveLineItems() instead. - ProcessPaymentActivity
Use IPaymentProcessor.ProcessPayment() instead. - RemoveDiscountsActivity
Use IOrderGroupExtensions.ApplyDiscounts() instead. - ShipmentSplitActivity
Use IOrderGroupExtensions.CalculateTotals() instead. - ValidateLineItemsActivity
Use IPlacedPriceProcessor.UpdatePlacedPrice() instead.
Related topics
- Calculating orders
- Workflows and activities [Legacy]
- CheckInventory activity [Legacy]
- AdjustInventory [Legacy]
- Customizing order processing activity flows [Legacy]
Last updated: Jul 02, 2021