private void ExecuteTransition() { stateActionController = subStateActionControllerProvider.GetStateActionController(this); DeviceSubWorkflowState initialState = initialStateProvider.DetermineInitialState(this.launchOptions.StateObject); AdvanceStateActionTransition(initialState); }
public DeviceSubWorkflowState DetermineInitialState(LinkRequest request) { if (request == null) { throw new ArgumentNullException(nameof(request)); } LinkActionRequest linkActionRequest = request.Actions.First(); DeviceSubWorkflowState proposedState = ((linkActionRequest.DeviceActionRequest?.DeviceAction) switch { LinkDeviceActionType.GetStatus => DeviceSubWorkflowState.GetStatus, LinkDeviceActionType.AbortCommand => DeviceSubWorkflowState.AbortCommand, LinkDeviceActionType.ResetCommand => DeviceSubWorkflowState.ResetCommand, _ => DeviceSubWorkflowState.Undefined });
public void GetNextAction_ShouldReturnCorrectType_When_Called(Type expectedType, DeviceSubWorkflowState initialState, bool set = true, bool exception = false) { TestHelper.Helper.SetFieldValueToInstance <IDeviceStateAction>("currentStateAction", false, false, subject, null); if (set) { var map = TestHelper.Helper.GetFieldValueFromInstance <Dictionary <DeviceSubWorkflowState, Func <IDeviceSubStateController, IDeviceSubStateAction> > >( "workflowMap", false, false, subject); IDeviceSubStateAction action = map[initialState](stubManager); if (exception) { TestHelper.Helper.SetPropertyValueToInstance <StateException>("LastException", true, false, action, new StateException()); } TestHelper.Helper.SetFieldValueToInstance <IDeviceStateAction>("currentStateAction", false, false, subject, action); } Assert.IsType(expectedType, subject.GetNextAction(initialState)); }
private void LogStateChange(DeviceSubWorkflowState oldState, DeviceSubWorkflowState newState) { // TODO: Add your logging here on the state change and update the messaging if necessary. //LoggingClient.LogInfoAsync($"State change from {oldState} to {newState}."); Console.WriteLine($"State change from {oldState} to {newState}."); }
private void AdvanceStateActionTransition(DeviceSubWorkflowState workflowState) { currentStateAction = stateActionController.GetNextAction(workflowState); _ = AssignAndForward(currentStateAction, null); }