private static IActivityMachine CreateMachineForCommandExecuting(DynamicConfiguration config) { CommandExecutingMachine activityMachine; // If no script treenode was given yet, try to create one here. if (config.HasDataKey("ScriptName") && config.HasDataKey("DeviceType") && !config.HasDataValue("TreeNode")) { config.Data.TreeNode = ((IExecuterLoader)config.Data.Loader). GetScriptNode(config.Data.ScriptName, config.Data.DeviceType); } if (config.HasDataValue("IsSubmachine") && config.Data.IsSubmachine) { activityMachine = new CommandExecutingMachine(config, config.Data.Name); } else { activityMachine = new CommandExecutingMachine(config.Data.ProcessName, config); } if (config.HasDataValue(Key.Instrument)) { var instrument = config.Data.Instrument as IInstrument; config.Data.IsInServiceMode = (instrument != null && instrument.InServiceMode); } activityMachine.Builder = ActivityMachineBuilderLoader.GetActivityMachineBuilder(config); activityMachine.LogType = LogType.Script; return(activityMachine); }
public static IActivityMachine CreateMachineForTrayProcessorErrorHandling(DynamicConfiguration config) { var ae = config.Data.Exception as AtlasException; config.Data.Station = ae.Station; var activityMachine = new ErrorHandlingActivityMachine(GetErrorMachineName(ae)); activityMachine.Builder = ActivityMachineBuilderLoader.GetActivityMachineBuilder(config); return(activityMachine); }
internal static IActivityMachine CreateMachineForTransportOperation(DynamicConfiguration config) { var dispatcher = config.Data.Dispatcher as SimpleDispatcher; var operation = config.Data.TransportOperation; var activityMachine = new TransportOperationMachine(Enum.GetName(typeof(TransportOperation), operation), dispatcher); // Try to reuse a builder if one was supplied. try { activityMachine.Builder = config.Data.Builder as IActivityMachineBuilder; } catch (Exception) { //nothing to do } if (activityMachine.Builder == null) { activityMachine.Builder = ActivityMachineBuilderLoader.GetActivityMachineBuilder(config); } return(activityMachine); }