private void DeleteScheduledJob(RunHangfireWorkflowInstanceJobModel data)
        {
            var jobId = _jobStorage
                        .EnumerateScheduledJobs <RunHangfireWorkflowInstanceJob, RunHangfireWorkflowInstanceJobModel>(x => x.WorkflowInstanceId == data.WorkflowInstanceId && x.ActivityId == data.ActivityId)
                        .Select(x => x.Key)
                        .FirstOrDefault();

            if (jobId == null)
            {
                return;
            }

            DeleteScheduledJob(jobId);
        }
        private void DeleteRecurringJob(RunHangfireWorkflowInstanceJobModel data)
        {
            var identity = data.GetIdentity();

            _recurringJobManager.RemoveIfExists(identity);
        }
        private void ScheduleRecurringJob(RunHangfireWorkflowInstanceJobModel data, string cronExpression)
        {
            var identity = data.GetIdentity();

            _recurringJobManager.AddOrUpdate <RunHangfireWorkflowInstanceJob>(identity, job => job.ExecuteAsync(data), cronExpression);
        }
 private void ScheduleJob(RunHangfireWorkflowInstanceJobModel data, Instant instant) => _backgroundJobClient.Schedule <RunHangfireWorkflowInstanceJob>(job => job.ExecuteAsync(data), instant.ToDateTimeOffset());