Exemplo n.º 1
0
        /// <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";
            }
        }
Exemplo n.º 2
0
        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);
        }