Greg Olson,
I just want to narrow in on the use case to make sure I understand your scope. You have a workflow generated from a Change object, for example? And you want to grab the value of an IBA that exists on the PBO (the Change object, for example)?
This is documented through WHC. But I have gone through it extensively in the last couple of months. So I can help you if you have any trouble interpreting the WHC article. Search for "working with PBO attributes" in WHC.
Below is an example from my use case. This code is in Execute Expression robot in the workflow template. The PBO in my case is a WTDocument actually - not a Change object.
doc = (wt.doc.WTDocument)primaryBusinessObject;
com.ptc.core.lwc.server.PersistableAdapter obj = new com.ptc.core.lwc.server.PersistableAdapter(doc,null,null,null);
obj.load("myIBAsInternalNameHere"); // this is the internal name of the IBA
myWorkflowVariableHere = (String)obj.get("myIBAsInternalNameHere"); // assuming myWorkflowVariableHere has already been instantiated somewhere previous