private void ConfigureControls(PrintingActivityData data) { shuffle_CheckBox.Checked = data.ShuffleDocuments; jobseparator_checkBox.Checked = data.PrintJobSeparator; enableThrottling_checkBox.Checked = data.JobThrottling; maxJobs_NumericUpDown.Enabled = data.JobThrottling; maxJobs_NumericUpDown.Value = data.MaxJobsInQueue; }
public XElement Convert(XElement xml) { // Creating the latest ActivityData PrintingActivityData resultData = new PrintingActivityData() { ShuffleDocuments = GetBool(xml, "ShuffleDocuments"), PrintJobSeparator = GetBool(xml, "PrintJobSeparator"), JobThrottling = GetBool(xml, "JobThrottling"), MaxJobsInQueue = GetInt(xml, "MaxJobsInQueue") }; return(Serializer.Serialize(resultData)); }
/// <summary> /// Creates and returns a <see cref="PluginConfigurationData" /> instance containing the /// configuration data from this control. /// </summary> /// <returns>The configuration data.</returns> public PluginConfigurationData GetConfiguration() { PrintingActivityData data = new PrintingActivityData() { ShuffleDocuments = shuffle_CheckBox.Checked, PrintJobSeparator = jobseparator_checkBox.Checked, JobThrottling = enableThrottling_checkBox.Checked, MaxJobsInQueue = (int)maxJobs_NumericUpDown.Value }; return(new PluginConfigurationData(data, Version) { Documents = documentSelectionControl.DocumentSelectionData, PrintQueues = new PrintQueueSelectionData(_printQueues) }); }
/// <summary> /// Validates the given metadata against the Printing Activity data. /// </summary> /// <param name="configurationData">The configuration data.</param> /// <returns>true if valid</returns> public bool ValidateMetadata(ref PluginConfigurationData configurationData) { bool validData = true; PrintingActivityData activityData = null; try { activityData = configurationData.GetMetadata <PrintingActivityData>(ConverterProvider.GetMetadataConverters()); } catch { activityData = new PrintingActivityData(); validData = false; } configurationData = new PluginConfigurationData(activityData, PrintingConfigurationControl.Version); return(validData); }
/// <summary> /// Start the activity. /// </summary> /// <param name="executionData">Serialized activity data.</param> public PluginExecutionResult ProcessActivity(PluginExecutionData executionData) { PrintingActivityData data = executionData.GetMetadata <PrintingActivityData>(); PrintQueueInfoCollection printQueues = executionData.PrintQueues; // Initialize the document iterator, if it is not already created if (_documentIterator == null) { CollectionSelectorMode mode = data.ShuffleDocuments ? CollectionSelectorMode.ShuffledRoundRobin : CollectionSelectorMode.RoundRobin; _documentIterator = new DocumentCollectionIterator(mode); } // Check to make sure we have something in the pool... if (printQueues.Count == 0) { return(new PluginExecutionResult(PluginResult.Skipped, "None of the selected print queues are available.", "No available print queues.")); } // Select a print queue and log the device/server if applicable PrintQueueInfo printQueueInfo = printQueues.GetRandom(); LogDevice(executionData, printQueueInfo); LogServer(executionData, printQueueInfo); // Get the corresponding system print queue LogDebug(string.Format("Retrieving print queue for {0}", printQueueInfo.QueueName)); PrintQueue printQueue; if (ExecutionServices.SessionRuntime.AsInternal().IsCitrixEnvironment()) { printQueue = GetCitrixPrintQueue(printQueueInfo); } else { printQueue = PrintQueueController.Connect(printQueueInfo); } LogDebug(string.Format("Found queue: {0}", printQueue.FullName)); if (data.JobThrottling) { // Make sure that there is enough room in the print queue for this job. if (!CheckJobCountInQueue(printQueue, data.MaxJobsInQueue)) { // Skip the activity. return(new PluginExecutionResult(PluginResult.Skipped, "Print Queue cannot accept any more jobs.", "Print queue throttling.")); } } LogDebug("Executing print controller"); if (data.PrintJobSeparator) { PrintTag(printQueue, executionData); } // Select a document to print Document document = _documentIterator.GetNext(executionData.Documents); ActivityExecutionDocumentUsageLog documentLog = new ActivityExecutionDocumentUsageLog(executionData, document); ExecutionServices.DataLogger.Submit(documentLog); // Download the document and log the starting information for the print job Guid jobId = SequentialGuid.NewGuid(); FileInfo localFile = ExecutionServices.FileRepository.GetFile(document); PrintJobClientLog log = LogPrintJobStart(executionData, localFile, printQueue, jobId); // Print the job var engine = new Print.PrintingEngine(); engine.StatusChanged += (s, e) => StatusChanged?.Invoke(s, e); var result = engine.Print(localFile, printQueue, jobId); // Log the ending information LogPrintJobEnd(log, result); LogDebug("Controller execution completed"); return(new PluginExecutionResult(PluginResult.Passed)); }