//////////////////////////////////////////////////////////////////////// // METHOD: CreateJobs private int CreateJobs(IJTXJob2 pParentJob) { try { System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor; bool bAutoCommit = ConfigurationCache.AutoCommitWorkflow; m_ipDatabase.LogMessage(5, 2000, "CreateJobs"); // Set the job template values IJTXJobManager2 pJobMan = m_ipDatabase.JobManager as IJTXJobManager2; IJTXJobDescription pJobDescription = new JTXJobDescriptionClass(); pJobDescription.Description = pParentJob.Description; pJobDescription.Priority = pParentJob.Priority; pJobDescription.ParentJobId = pParentJob.ID; pJobDescription.StartDate = pParentJob.StartDate; if (m_dueDate != Constants.NullDate) { pJobDescription.DueDate = m_dueDate; } else if (m_duration > 0) { pJobDescription.DueDate = System.DateTime.Now.AddDays(m_duration); } else { pJobDescription.DueDate = pParentJob.DueDate; } if (!String.IsNullOrEmpty(m_paramAssignToGroup)) { pJobDescription.AssignedType = jtxAssignmentType.jtxAssignmentTypeGroup; pJobDescription.AssignedTo = m_paramAssignToGroup; } else if (!String.IsNullOrEmpty(m_paramAssignToUser)) { pJobDescription.AssignedType = jtxAssignmentType.jtxAssignmentTypeUser; pJobDescription.AssignedTo = m_paramAssignToUser; } else { pJobDescription.AssignedType = jtxAssignmentType.jtxAssignmentTypeUnassigned; } pJobDescription.OwnedBy = ConfigurationCache.GetCurrentJTXUser().UserName; if (pParentJob.ActiveDatabase != null) { pJobDescription.DataWorkspaceID = pParentJob.ActiveDatabase.DatabaseID; } // Set the parent version. This only makes sense if the active workspace has been set if (pJobDescription.DataWorkspaceID != null) { if (m_paramCreateVersionType == CreateVersionType.None || m_paramCreateVersionType == CreateVersionType.UseParentJobsVersion) { pJobDescription.ParentVersionName = pParentJob.VersionName; // This has to be set here because setting the job workspace resets the value } else if (m_paramCreateVersionType == CreateVersionType.UseJobTypeDefaultSettings) { IJTXJobType pJobType = m_ipDatabase.ConfigurationManager.GetJobType(m_paramJobTypeName); if (pJobType != null) { pJobDescription.ParentVersionName = pJobType.DefaultParentVersionName; } } else if (m_paramCreateVersionType == CreateVersionType.UseParentJobsDefaultVersion) { pJobDescription.ParentVersionName = pParentJob.JobType.DefaultParentVersionName; } else if (m_paramCreateVersionType == CreateVersionType.UseParentJobsParentVersion) { pJobDescription.ParentVersionName = pParentJob.ParentVersion; } } // Determine the number of jobs to make m_ipDatabase.LogMessage(5, 2000, "Before Determining Number of Jobs"); IArray aoiList = null; int numJobs; if (!GetNumberOfJobs(pParentJob, ref aoiList, out numJobs)) { return(1); } if (numJobs <= 0) { MessageBox.Show(Properties.Resources.ZeroJobCount); return(0); } pJobDescription.AOIList = aoiList; m_ipDatabase.LogMessage(5, 2000, "After Determining Number of Jobs"); // Create the job objects m_ipDatabase.LogMessage(5, 2000, "Before CreateJobs"); pJobDescription.JobTypeName = m_paramJobTypeName; IJTXExecuteInfo pExecInfo; m_ipJobs = pJobMan.CreateJobsFromDescription(pJobDescription, numJobs, true, out pExecInfo); m_ipDatabase.LogMessage(5, 2000, "After CreateJobs"); // Populate the job data for (int i = 0; i < m_ipJobs.Count; ++i) { IJTXJob pJob = m_ipJobs.get_Item(i); SetJobProperties(pJobMan, pJob, pParentJob); } return(1); } catch (COMException ex) { if (ex.ErrorCode == (int)fdoError.FDO_E_SE_INVALID_COLUMN_VALUE) { MessageBox.Show(Properties.Resources.InvalidColumn, Properties.Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } else { MessageBox.Show(ex.Message); } return(0); } catch (Exception ex2) { MessageBox.Show(ex2.Message, Properties.Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return(0); } finally { System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Default; } }