C# Class CustomerOrder.Actor.CustomerOrderActor

Inheritance: Actor, ICustomerOrderActor, IRemindable
Afficher le fichier Open project: Azure-Samples/service-fabric-dotnet-web-reference-app Class Usage Examples

Méthodes publiques

Méthode Description
CustomerOrderActor ( ActorService actorService, ActorId actorId ) : Common
GetOrderStatusAsStringAsync ( ) : Task

Returns the status of the Customer Order.

InternalActivateAsync ( ICodePackageActivationContext context, IServiceProxyFactory proxyFactory ) : Task

Adding this method to support DI/Testing We need to do some work to create the actor object and make sure it is constructed completely In local testing we can inject the components we need, but in a real cluster those items are not established until the actor object is activated. Thus we need to have this method so that the tests can have the same init path as the actor would in prod

ReceiveReminderAsync ( string reminderName, byte context, System.TimeSpan dueTime, System.TimeSpan period ) : Task
SubmitOrderAsync ( IEnumerable orderList ) : Task

This method accepts a list of CustomerOrderItems, representing a customer order, and sets the actor's state to reflect the status and contents of the order. Then, the order is fulfilled with a private FulfillOrder call that abstracts away the entire backorder process from the user.

Méthodes protégées

Méthode Description
OnActivateAsync ( ) : Task

Initializes CustomerOrderActor state. Because an order actor will only be activated once in this scenario and never used again, when we initiate the actor's state we change the order's status to "Confirmed," and do not need to check if the actor's state was already set to this.

OnDeactivateAsync ( ) : Task

Deactivates the actor object

Private Methods

Méthode Description
FulfillOrderAsync ( ) : Task

This method takes in a list of CustomerOrderItem objects. Using a Service Proxy to access the Inventory Service, the method iterates onces through the order and tries to remove the quantity specified in the order from inventory. If the inventory has insufficient stock to remove the requested amount for a particular item, the entire order is marked as backordered and the item in question is added to a "backordered" item list, which is fulfilled in a separate method. In its current form, this application addresses the question of race conditions to remove the same item by making a rule that no order ever fails. While an item that is displayed in the store may not be available any longer by the time an order is placed, the automatic restock policy instituted in the Inventory Service means that our FulfillOrder method and its sub-methods can continue to query the Inventory Service on repeat (with a timer in between each cycle) until the order is fulfilled.

GetOrderStatusAsync ( ) : Task
SetOrderStatusAsync ( CustomerOrderStatus orderStatus ) : Task

Method Details

CustomerOrderActor() public méthode

public CustomerOrderActor ( ActorService actorService, ActorId actorId ) : Common
actorService ActorService
actorId ActorId
Résultat Common

GetOrderStatusAsStringAsync() public méthode

Returns the status of the Customer Order.
public GetOrderStatusAsStringAsync ( ) : Task
Résultat Task

InternalActivateAsync() public méthode

Adding this method to support DI/Testing We need to do some work to create the actor object and make sure it is constructed completely In local testing we can inject the components we need, but in a real cluster those items are not established until the actor object is activated. Thus we need to have this method so that the tests can have the same init path as the actor would in prod
public InternalActivateAsync ( ICodePackageActivationContext context, IServiceProxyFactory proxyFactory ) : Task
context ICodePackageActivationContext
proxyFactory IServiceProxyFactory
Résultat Task

OnActivateAsync() protected méthode

Initializes CustomerOrderActor state. Because an order actor will only be activated once in this scenario and never used again, when we initiate the actor's state we change the order's status to "Confirmed," and do not need to check if the actor's state was already set to this.
protected OnActivateAsync ( ) : Task
Résultat Task

OnDeactivateAsync() protected méthode

Deactivates the actor object
protected OnDeactivateAsync ( ) : Task
Résultat Task

ReceiveReminderAsync() public méthode

public ReceiveReminderAsync ( string reminderName, byte context, System.TimeSpan dueTime, System.TimeSpan period ) : Task
reminderName string
context byte
dueTime System.TimeSpan
period System.TimeSpan
Résultat Task

SubmitOrderAsync() public méthode

This method accepts a list of CustomerOrderItems, representing a customer order, and sets the actor's state to reflect the status and contents of the order. Then, the order is fulfilled with a private FulfillOrder call that abstracts away the entire backorder process from the user.
public SubmitOrderAsync ( IEnumerable orderList ) : Task
orderList IEnumerable
Résultat Task