Workflow Manager Shows No version

689
2
10-05-2017 12:38 AM
ApurvDanke
Occasional Contributor

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

0 Kudos
2 Replies
ApurvDanke
Occasional Contributor

We installed WFM on another machine, and connected to the same Workflow database, and installed our application in this other machine. There everything is working fine. So it could be an issue in WFM install in the original machine.

Regards,

Apurv

ApurvDanke
Occasional Contributor

Finally we found the root cause of this issue. It has got nothing to do with installation or environment etc. The problem is that our version names are quite long in length i.e. more than 50 chars. However, the char limit of the VERSION field in JTX_JOBS_DB table is only 50 chars. Hence I think WFM fails to update the version name in this field. I tried creating jobs with names such that version name would be 50 char or less than 50 chars, and it is able to populate those version names. So as a fix, we had to alter the field to increase the length to accommodate our lengthy version names. However I have following observations.

1. Why is the JTX_JOBS_DB table designed in such a way that VERSION has only 50 char limit while VERSION_OWNER has 200 char. I think it should be the opposite. In how many cases will we have an owner name more than 50 char?

2. In JTX_JOBS table the version field has 100 char limit, whearas in the JTX_JOBS_DB it is 50 char. To make it consistent, both should be 100 char.

Regards,

Apurv

0 Kudos