Sometimes when folks write Jira cases against PDI, they post sample transformations that reproduce the problem, which can be very helpful. However, often the transformation references a database that PDI developers can't access, which renders the transformation not-so-helpful for debugging and reproduction purposes. We usually ask that the case writer create a Data Grid step or something that will recreate the offending data without requiring a database connection. This can get complex and may be beyond the skills of some users.
To that end, I wrote a User Defined Java Class (UDJC) that will read in rows from a step and create a Data Grid step in the transformation that contains the meta and data necessary to recreate the problem. The user can paste the UDJC step into their transformation, insert it after the step they wish to model, then run the transformation. At the end, a Data Grid step will be added to the transformation, and the user can substitute it into the transformation in place of the step as a row provider.
As an example, let's use the Get Step Plugins transformation from my previous post:
I can create a UDJC step and paste in the code (actually, I keep a transformation handy that contains only this step so I can easily cut-n-paste into transformations), then add it to the stream after Get Step Plugins:
After running or previewing the transformation, the Data Grid Step is created:
Then I insert the Data Grid after the Create Data Grid UDJC and remove the earlier steps:
Previewing the Input Steps step, I get the same results as I did with the Get Step Plugins source!
I added Undo support so you can use Ctrl-Z to undo the addition of the Data Grid step if you wish. The code for the UDJC is located on Gist here. I've already got ideas on how to make the "creating a reproduction transformation" process even easier, but I think this is a decent first step towards that. Let me know what you think!