Hi,
Since last week or so we have started facing this issue. We're using WFM 10.4.1 and we connect to WFM using OS authentication. The database is Oracle 12c. We have provided all privileges (select, insert, update, delete) on WFM tables and Feature classes to the users who use OS authentication to connect. We have some applications which use the following code to create jobs and versions. Now earlier, the version was getting attached to the job as part of Job Information. Now it simply shows "No version". What we did is that we had to modify a particular job type's workflow, and we wanted to only deploy that patricular JXL file of this workflow. But we cannot overwrite a workflow using its updated JXL file. The only way is to import the entire WFM configuration. We did not want that approach. So to test the new approach, we deleted the existing workflow in our development environment which was attached to a particular job type. Then we imported the updated workflow JXL and gave the same name to our workflow and applied it on the job type. Since then our code stopped working. The code is creating the versions in the geodatabase, but it is not updating the job information or JTX_JOBS table with the version name. With OS authentication, the version names should appear with double quotes such as "ABCUser".VersionName. But in the JTX_JOBS table it is just showing the default "JobID:ID". We have also tried following steps.
1. Importing the entire WFM configuration JXL file from another environment, where everything is working fine.
2. We also dropped the WFM schema, and recreated the schema, and workflow database and configurations.
Still the issue persists. As we tried both these options, I think the problem cannot be in the database or the JXL import. It might be -
1. Problem with Workflow Manager installation.
2. Some other configuration, which got corrupt which we're not aware of.
Below is the C# code.
IJTXDatabaseManager databaseMan = null;
IJTXDatabase2 JTXdatabase = null;
IJTXActivityType pActType = null;
IJTXConfigurationProperties pConfigProps = null;
IJTXJobType pJobType = null; ;
IJTXJobManager pJobManager = null;
IJTXJob pNewJob = null;
IVersion pNewVersion = null;
string jobType = string.Empty;
string jobName = string.Empty;
string dateFormat = string.Empty;
string notesInformation = string.Empty;
string vesrsionName = string.Empty;
try
{
//binding
bool isBound = ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.Desktop);
if (isBound)
{
IAoInitialize aoInitialize = new AoInitializeClass();
//check for license
aoInitialize.Initialize(esriLicenseProductCode.esriLicenseProductCodeStandard);
aoInitialize.CheckOutExtension(esriLicenseExtensionCode.esriLicenseExtensionCodeWorkflowManager);
databaseMan = new JTXDatabaseManagerClass();
JTXdatabase = (IJTXDatabase2)databaseMan.GetActiveDatabase(false);
jobType = "<Our Job Type Name>";
dateFormat = "ddMMyyyy_HHmmss";
jobName = "<Our Job Name Prefix>" + DateTime.Now.ToString(dateFormat);
pJobType = JTXdatabase.ConfigurationManager.GetJobType(jobType);
Console.WriteLine(pJobType.ID);
pJobManager = JTXdatabase.JobManager;
pNewJob = pJobManager.CreateJob(pJobType, 0, true);
pNewJob.Name = jobName;
pActType = JTXdatabase.ConfigurationManager.GetActivityType(Constants.ACTTYPE_CREATE_JOB);
if (pActType != null)
{
pNewJob.LogJobAction(pActType, null, "");
}
pConfigProps = (IJTXConfigurationProperties)JTXdatabase.ConfigurationManager;
if (pConfigProps.PropertyExists(Constants.JTX_PROPERTY_AUTO_STATUS_ASSIGN))
{
string strAutoAssign = pConfigProps.GetProperty(Constants.JTX_PROPERTY_AUTO_STATUS_ASSIGN);
if (strAutoAssign == "TRUE")
{
pNewJob.Status = JTXdatabase.ConfigurationManager.GetStatus("Created");
}
}
vesrsionName = pNewJob.Name;
pNewJob.VersionName = pNewJob.Name;
pNewVersion = pNewJob.CreateVersion(esriVersionAccess.esriVersionAccessPublic);
Console.WriteLine(pNewJob.VersionName.ToString());
pNewJob.Store();
MessageBox.Show("Success");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
if (databaseMan != null)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(databaseMan);
databaseMan = null;
}
if (JTXdatabase != null)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(JTXdatabase);
JTXdatabase = null;
}
if (pActType != null)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(pActType);
pActType = null;
}
if (pConfigProps != null)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(pConfigProps);
pConfigProps = null;
}
if (pJobType != null)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(pJobType);
pJobType = null;
}
if (pJobManager != null)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(pJobManager);
pJobManager = null;
}
if (pNewJob != null)
{
System.Runtime.InteropServices.Marshal.ReleaseComObject(pNewJob);
pNewJob = null;
}
}
Any help is greatly appreciated. I can provide further details if necessary.
Regards,
Apurv