/// <summary> /// Runs the relativity script job /// </summary> /// <param name="client">the relativity client</param> /// <param name="job">the scheduled job</param> /// <param name="workspace">the workspace we exect to execute the script in</param> private void ExecuteJobInWorkspace(IRSAPIClient client, JobSchedule job, RelativityWorkspace workspace) { var inputs = this.jobScheduleRepository.GetJobInputs(job); Logger.Trace($"found ${inputs.Count} inputs for job ${job.Id}"); // new relativity script pass in artifact id var maxAttempts = 3; var attempts = 0; RelativityScriptResult scriptResult = null; do { attempts++; try { var script = new kCura.Relativity.Client.DTOs.RelativityScript(job.RelativityScriptId); var scriptInputs = inputs.Select(i => new RelativityScriptInput(i.InputName, i.InputValue)).ToList(); scriptResult = this.relativityScriptRepository.ExecuteRelativityScript(script, scriptInputs, workspace); } catch (Exception ex) { if (attempts < maxAttempts) { Task.Delay(1000 * attempts); Logger.Info($"Attempt ${attempts} failed for job ${job.Id} with exception ${ex.Message}"); continue; } else { throw ex; } } } while (attempts < maxAttempts); if (scriptResult != null) { job.CurrentJobHistory.HasError = !scriptResult.Success; job.CurrentJobHistory.ResultText = scriptResult.Message; if (job.CurrentJobHistory.HasError) { Logger.Info($"Job {job.Id} failed with result {scriptResult.Message}"); } } else { job.CurrentJobHistory.HasError = true; job.CurrentJobHistory.ResultText = "scriptResult Not initialized"; } }
public static List <String> GetRelativityScriptInput(IRSAPIClient client, String scriptName, Int32 workspaceArtifactID, IDBContext dbContext) { var returnval = new List <string>(); List <RelativityScriptInputDetails> scriptInputList = null; int artifactid = GetScriptArtifactId(scriptName, workspaceArtifactID, client); // STEP 1: Using ArtifactID, set the script you want to run. kCura.Relativity.Client.DTOs.RelativityScript script = new kCura.Relativity.Client.DTOs.RelativityScript(artifactid); // STEP 2: Call GetRelativityScriptInputs. try { scriptInputList = client.Repositories.RelativityScript.GetRelativityScriptInputs(script); } catch (Exception ex) { Console.WriteLine(string.Format("An error occurred: {0}", ex.Message)); return(returnval); } // STEP 3: Each RelativityScriptInputDetails object can be used to generate a RelativityScriptInput object, // but this example only displays information about each input. foreach (RelativityScriptInputDetails relativityScriptInputDetails in scriptInputList) { // ACB: Removed because it's only necessary for debugging //Console.WriteLine("Input Name: {0}\n ", //Input Id: {1}\nInput Type: ", // relativityScriptInputDetails.Name); //// relativityScriptInputDetails.Id); returnval.Add(relativityScriptInputDetails.Name); } return(returnval); }