Once a problem in the output has been narrowed down to the workspace that produced it, it's necessary to identify where that error occurred. To do so often means re-running the workspace in various ways to narrow down further the location of the issue.
Testing a Workspace
The most common way to narrow down a problem is to run it with Inspector transformers attached at specific points.
Ideally you have already got a good idea of which section of workspace - or which transformers - might be at fault; so only attach Inspectors to those parts you suspect.
Re-run the workspace and inspect each set of data to determine at which point the problem occurred.
|It's certainly quicker to use "Run with Full Inspection" than to manually add Inspector transformers. However, "Run with Full Inspection" causes a workspace to run more slowly, and at some point the time saved in setup is just being lost in run-time.|
Testing a Section in Isolation
Testing and debugging a large workspace is easier when it's possible to isolate sections and test them separately. This is done by disabling connections to the parts that do not need testing.
This is also a useful technique for where a failure halts the translation. That's because a failure can stop a translation before data is sent through Inspector transformers to the Data Inspector!
In these scenarios you need to stop data reaching the failure point, in order to view that data in the Data Inspector.
A connection is disabled by right-clicking it and choosing the option to Disable (or selecting it and using the shortcut Ctrl+E):
A disabled connection is rendered inoperative in much the same way as if it had been deleted, and no features will pass through.
Disabled connections are listed in the Navigator window. Clicking them will move the canvas display to the location of that disabled connection.
Here the user has chosen to disable a connection so that they can test the upper part of the workspace without the lower part running as well:
This speeds up the translation so that testing of the required section runs quicker, but also removes the possibility that the lower part would be responsible for any problems with the output.
Testing with Python/SQL Transformers
Testing with Inspector transformers is not a useful technique where the problem occurs inside a multi-line command; for example a script inside a PythonCaller or SQLExector transformer.
In these scenarios you would need to debug the script in other ways. Because FME doesn't include a full development environment for scripting languages, you would likely need to strip down the script to individual components, and build it back up, testing each part at a time until you locate the issue.
|Miss Vector says...|
For testing purposes it's much easier to disable certain parts of a workspace when you've properly divided it up into sections with bookmarks. So here's a question for you:
It's possible to disable other objects besides connections. Can you pick out which of these objects (there may be more than one) can be disabled in Workbench?
2. Feature Types