//////////////////////////////////////////////////////////////////////// // METHOD: CreateDependencyOnParentJob private void CreateDependencyOnParentJob(IJTXJobDependencies dependencyManager, IJTXJob2 pParentJob, int childJobID) { IJTXJobDependency dependency = dependencyManager.CreateDependency(pParentJob.ID); dependency.DepJobID = childJobID; dependency.DepOnType = jtxDependencyType.jtxDependencyTypeStatus; IJTXStatus statusType = null; if (!m_paramHasStatusType) { statusType = m_ipDatabase.ConfigurationManager.GetStatus("Closed"); } else { statusType = m_ipDatabase.ConfigurationManager.GetStatus(m_paramStatusType); } dependency.DepOnValue = statusType.ID; dependency.HeldOnType = jtxDependencyType.jtxDependencyTypeStep; IJTXWorkflowExecution parentWorkflow = pParentJob as IJTXWorkflowExecution; int[] currentSteps = parentWorkflow.GetCurrentSteps(); int dependentStep = currentSteps[0]; if (m_paramDependNextStep) { IJTXWorkflowConfiguration workflowConf = pParentJob as IJTXWorkflowConfiguration; try { dependentStep = workflowConf.GetAllNextSteps(currentSteps[0])[0]; } catch (IndexOutOfRangeException) { MessageBox.Show(Properties.Resources.NoNextStep, Properties.Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } } dependency.HeldOnValue = dependentStep; dependency.Store(); IPropertySet props = new PropertySetClass(); props.SetProperty("[DEPENDENCY]", dependency.ID); JobUtilities.LogJobAction(m_ipDatabase, pParentJob, Constants.ACTTYPE_ADD_DEPENDENCY, "", props); }
//////////////////////////////////////////////////////////////////////// // METHOD: CreateExtendedPropertyRecord private bool CreateExtendedPropertyRecord(IJTXJob job, ExtendedPropertyIdentifier child) { IJTXAuxProperties pAuxProps = (IJTXAuxProperties)job; IJTXAuxRecordContainer pAuxContainer = pAuxProps.GetRecordContainer(child.LongTableName); if (!string.IsNullOrEmpty(m_paramExtendedProperties) && pAuxContainer == null) { string msg = string.Format( "Unable to set extended property for child job {0}. Unable to find child job's extended property table: {1}", job.ID, child.LongTableName); m_ipDatabase.LogMessage(3, 2000, msg); } System.Array contNames = pAuxProps.ContainerNames; System.Collections.IEnumerator contNamesEnum = contNames.GetEnumerator(); contNamesEnum.Reset(); while (contNamesEnum.MoveNext()) { try { string strContainerName = (string)contNamesEnum.Current; if (!string.IsNullOrEmpty(m_paramExtendedProperties) && (strContainerName.ToUpper()).Equals(child.LongTableName.ToUpper())) { pAuxContainer = pAuxProps.GetRecordContainer(strContainerName); if (pAuxContainer.RelationshipType != esriRelCardinality.esriRelCardinalityOneToOne) { throw new Exception("The table relationship is not one-to-one."); } IJTXAuxRecord childRecord = pAuxContainer.GetRecords().get_Item(0);//pAuxContainer.CreateRecord(); SetExtendedPropertyValues(childRecord, child); JobUtilities.LogJobAction(m_ipDatabase, job, Constants.ACTTYPE_UPDATE_EXT_PROPS, "", null); } } catch (Exception ex) { string msg = string.Format( "Unable to create extended property {0} in record for jobid {1}. ERROR: {2}", child.FieldName, job.ID, ex.Message); m_ipDatabase.LogMessage(3, 2000, msg); } } return(true); }
//////////////////////////////////////////////////////////////////////// // METHOD: CreateChildVersion private bool CreateChildVersion(ref IJTXJob pJob) { IVersion pNewVersion = null; try { string strVersionName = pJob.VersionName; int index = strVersionName.IndexOf(".", 0); if (index >= 0) { strVersionName = strVersionName.Substring(index + 1); } pJob.VersionName = strVersionName; pNewVersion = pJob.CreateVersion(esriVersionAccess.esriVersionAccessPublic); if (pNewVersion == null) { m_ipDatabase.LogMessage(3, 1000, "Unable to create version for child job ID: " + pJob.ID); } else { IPropertySet pOverrides = new PropertySetClass(); pOverrides.SetProperty("[VERSION]", pNewVersion.VersionName); JobUtilities.LogJobAction(m_ipDatabase, pJob, Constants.ACTTYPE_CREATE_VERSION, "", pOverrides); JTXUtilities.SendNotification(Constants.NOTIF_VERSION_CREATED, m_ipDatabase, pJob, pOverrides); } } catch (Exception ex) { m_ipDatabase.LogMessage(3, 1000, "Unable to create version for child job ID: " + pJob.ID + ". ERROR: " + ex.Message); } finally { System.Runtime.InteropServices.Marshal.ReleaseComObject(pNewVersion); } return(true); }