/// <summary> /// Sets up the ScantoSafeQ scan job. /// </summary> /// <param name="device">The device.</param> protected override void SetupJob(IDevice device) { if (device == null) { throw new ArgumentNullException("device"); } _SafeQApp = SafeQAppFactory.Create(device); _SafeQApp.WorkflowLogger = WorkflowLogger; InitializeAuthenticator(_activityData.AuthProvider, device, ExecutionData); AuthenticationMode am = (_activityData.SafeQAuthentication == false) ? AuthenticationMode.Eager : AuthenticationMode.Lazy; Launch(); }
/// <summary> /// Launches the Pull print solution and pulls the desired number of documents. /// </summary> /// <returns></returns> protected override PluginExecutionResult LaunchAndPull() { OnDocumentProcessSelected(_activityData.DocumentProcessAction.GetDescription()); PluginExecutionResult result = new PluginExecutionResult(PluginResult.Passed); try { _safeQApp = SafeQAppFactory.Create(Device); _safeQApp.WorkflowLogger = WorkflowLogger; RecordEvent(DeviceWorkflowMarker.ActivityBegin); if (!_activityData.ReleaseOnSignIn) { Launch(); ExecutePullPrintAction(); // List out the documents that we pulled/deleted if (_activityData.DocumentProcessAction == SafeQPrintPullPrintAction.Delete) { AffectedDocIds.ForEach(x => OnStatusUpdate("Deleted document with id = " + x)); } else { AffectedDocIds.ForEach(x => OnStatusUpdate("Pulled document with id = " + x)); } if (_validationTargets.Contains(_activityData.DocumentProcessAction)) { ValidatePull(AffectedDocIds, DeviceInfo); } ExecutionServices.SystemTrace.LogDebug($"Available jobs (Initial)={InitialJobCount}"); ExecutionServices.SystemTrace.LogDebug($"Available jobs (Final)={FinalJobCount}"); } else { result = SignInAndRelease(); } } catch (DeviceCommunicationException ex) { result = new PluginExecutionResult(PluginResult.Failed, ex.Message, "Device communication error."); GatherTriageData(ex.ToString()); } catch (DeviceInvalidOperationException ex) { result = new PluginExecutionResult(PluginResult.Failed, ex.Message, "Device automation error."); GatherTriageData(ex.ToString()); } catch (DeviceWorkflowException ex) { result = new PluginExecutionResult(PluginResult.Failed, ex, "Device workflow error."); GatherTriageData(ex.ToString()); } catch (NoJobsFoundException) { result = new PluginExecutionResult(PluginResult.Skipped, "No jobs found to pull", "Pull print queue empty."); } catch (Exception ex) { GatherTriageData(ex.ToString()); throw; } finally { SignOut(_safeQApp); SubmitLog(result.Result.ToString()); CollectMemoryData(_activityData.DeviceMemoryProfilerConfig, "SafeQPullPrint"); RecordEvent(DeviceWorkflowMarker.ActivityEnd); //Release any connections to the device. This is critical for Omni operations. Dispose(); } return(result); }