Writing code has always been something that David Graham has enjoyed. Coming from a Mechanical Engineering background, this developer consultant has always had an interest in figuring out what a customer wants and how to get there, thus specializing as a Windchill Expert to make it happen.
“All this code writing is just solving a puzzle,” said David. “There’s a lot of interesting problems to be solved.”
David Graham is currently retired but worked for PTC from 1994 to 2001. As an active member of the PTC Windchill Community, David takes the time to network with other developers and will post solutions to roadblocks others may have. You may have read some of his posts on Windchill workflows.
Beyond the PTC Community, David consults on Windchill with clients. When writing code, he might take an out of the box workflow in Windchill and assist a company looking to automate by customizing it to fit their needs. When it’s done, it likely does not resemble the original workflow.
“We want Windchill to fit the company, not the company to fit Windchill,” he said.
One example of a workflow customization David worked on was an automation project. The users were responsible for revising WTPart, WTDocument and EPMDocuments (CAD Drawings and CAD Models), and all operations the users did were manual. Revision levels and linkage between objects all had to be the same. Additionally, the user opened the CAD Drawing in Creo Parametric, created a Tiff file of the drawing, and attached it as the primary content to the WTDocument.
By automating this operation, the objects were revised, the linkages were cleaned up, and the CAD drawing was published as HPGL. Creating a Tiff file from the HPGL using a third-party tool, the Tiff file was attached with filename: <Document number>– <Document revision>.tif as primary content to the WTDocument.
“Wherever possible, the operation should be done automatically using sound logic,” David said. “If the operation must be done by a user, if possible, their work should automatically be checked. Windchill should work for you.”
David noticed that out of the box Setup Participant tasks didn’t ensure managers added participants to specified roles. Since this could be an issue if the workflow routes to tasks where participant roles have no users, he wrote code to ensure that roles or groups have identified users before the task could be completed. This exception states the problem, halts the manager from completing their task, and ensures participants have been assigned to the roles.
“By checking, especially if it is wrong, you can send them instructions and guidance,” David pointed out.
One of the things David would like to see would be a more thorough and inclusive set of Java Docs for Windchill. With this documentation of classes and methods, developers can better understand what the code will do and eliminate additional testing or decompiling.
“Knowing the relations between tables and their columns is key to understanding what’s going on under the hood,” David added.
If you have questions for David, you can find him by his PTC Windchill Community Username: d_graham
I've worked with David for many years both when I was with PTC and after. He is top notch and fearless. **bleep** those referential integrity blocks. He is the Carroll Shelby of Windchill programmers.