And the result is that the first column is always populated, and the second is always empty. In addition, I notice when the name is missing any leading 0’s the name, even through I expect the name to be a string.
On a related note, is there a list of properties ProvisioningTransactionObjectDataSource? It’s not in the javadoc.
As you are using an invalid field name ‘name1’ the value is not getting populated. The value of the field gets populated from the java code in the class ProvisioningTransactionObjectDataSource.
I need multiple columns that are derived from the ProvisioningTransaction. This means I need multiple columns being fed the id so I can retrieve the PT and then retrieve the field I want from it. The xml I posted is me just trying to figure out the issue.
Is there a way I can retrieve it once for the entire row? That would probably be more efficient anyways.
Then you can use Filter datasource type so you can set any field name to the column, can take the id and use RenderScript to customize the column values by taking the property as id.
I already have a Filter report that uses the ProvisioningTransaction and much of the code I have works there. This, however, uses the sailpoint.reporting.datasource.ProvisioningTransactionObjectDataSource java object, which does not have a corresponding table, and I don’t have access to the source code or any javadoc.
sailpoint.reporting.datasource.ProvisioningTransactionObjectDataSource is not an object, it is a class which implements the JavaDataSource interface, to retrieve the data related to the ProvisioningTransaction object, therefore you can use only the properties of ProvisioningTransaction object in the property
It’s a java object, instead of a transaction object. As I have said several times, there is no javadoc for this object, so I don’t know what properties it possesses.
Also, none of this solves the original issue, calling the name property more than once fails.
I have tried is and it does work, however the same code does not work with the java object approach. The filter approach does not give me what my bosses have demanded of me. I need the java approach. I need to be able to call the same property multiple times and get the same value back.
There is no JavaDocs for the class “sailpoint.reporting.datasource.ProvisioningTransactionObjectDataSource” as it is not a primary object class and this class is created for the ProvisioningTransaction reports
To view the properties available to be used in the report, you should look into the ProvisioningTransaction object from debug page.
As you are using the invalid field names, the columns are not getting populated and not because of the property. To look at the available field names you can look into the OOTB “Detailed Provisioning Transaction Object Report” report.
If you want to use you custom field names and use Java DataSource type, then you can create a custom class which implements JavaDataSource and mention it in the “dataSourceClass” in the TaskDefinition.
That’s the behavior of java data source reports. The fields are hardcoded inside the data source class but all the available object (in this case ProvisioningTransaction) properties can be added as field names and you will get the respective value.
As your requirement is to get some field from the provisioning transaction object, try adding the property name as the field name and set the property to the value same as that of the field name.
If the field property is not what is needed and you need to make other lookups, add a renderscript to the name field and do the needed lookups and put them in a variable called renderCache as renderCache.put("varName", objValue) which are persistent for the whole report execution and retrieve the value in another custom column render script and return it.
<ReportColumnConfig field="name" header="name" property="name" sortable="true" width="110">
<RenderScript>
// lookup the value using methods value is the variable that will hold the current value for this field and return the value in the end
renderCache.put("otherField", objectValue);
return value;
</RenderScript>
</ReportColumnConfig>
<ReportColumnConfig field="nameOne" header="nameOne" property="name" sortable="true" width="110">
<RenderScript>
// lookup the value from the renderCache and return it
return renderCache.get("otherField", objectValue);
</RenderScript>
</ReportColumnConfig>