コード例 #1
0
        public async Task <(WorkerResult, RefreshAction)> Execute(CopyTrajectoryJob job)
        {
            var(trajectory, targetWellbore) = await FetchData(job);

            var copyTrajectoryQuery = CreateCopyTrajectoryQuery(trajectory, targetWellbore);
            var copyLogResult       = await witsmlClient.AddToStoreAsync(copyTrajectoryQuery);

            if (!copyLogResult.IsSuccessful)
            {
                var errorMessage = "Failed to copy trajectory.";
                Log.Error(
                    "{ErrorMessage} Source: UidWell: {SourceWellUid}, UidWellbore: {SourceWellboreUid}, Uid: {SourceTrajectoryUid}. " +
                    "Target: UidWell: {TargetWellUid}, UidWellbore: {TargetWellboreUid}.",
                    errorMessage,
                    job.Source.WellUid, job.Source.WellboreUid, job.Source.TrajectoryUid,
                    job.Target.WellUid, job.Target.WellboreUid);
                return(new WorkerResult(witsmlClient.GetServerHostname(), false, errorMessage, copyLogResult.Reason), null);
            }

            Log.Information("{JobType} - Job successful. Trajectory copied", GetType().Name);
            var refreshAction = new RefreshWellbore(witsmlClient.GetServerHostname(), job.Target.WellUid, job.Target.WellboreUid, RefreshType.Update);
            var workerResult  = new WorkerResult(witsmlClient.GetServerHostname(), true, $"Trajectory {trajectory.Name} copied to: {targetWellbore.Name}");

            return(workerResult, refreshAction);
        }
コード例 #2
0
        private async Task <Tuple <WitsmlTrajectory, WitsmlWellbore> > FetchData(CopyTrajectoryJob job)
        {
            var trajectoryQuery = GetTrajectory(witsmlSourceClient, job.Source);
            var wellboreQuery   = GetWellbore(witsmlClient, job.Target);
            await Task.WhenAll(trajectoryQuery, wellboreQuery);

            var log            = await trajectoryQuery;
            var targetWellbore = await wellboreQuery;

            return(Tuple.Create(log, targetWellbore));
        }
コード例 #3
0
 public async Task CopyTrajectory()
 {
     var job = new CopyTrajectoryJob
     {
         Source = new TrajectoryReference
         {
             WellUid       = "4d287b3e-9d9c-472a-9b82-d667d9ea1bec",
             WellboreUid   = "a2d2854b-3880-4058-876b-29b14ed7c917",
             TrajectoryUid = "1YJFL7"
         },
         Target = new WellboreReference
         {
             WellUid     = "fa53698b-0a19-4f02-bca5-001f5c31c0ca",
             WellboreUid = "70507fdf-4b01-4d62-a642-5f154c57440d"
         }
     };
     await worker.Execute(job);
 }