I'm happy to share I believe I have something that works! I didn't realize that I needed to Cast to a Workable since the checkout method was being cast to a changeable. The following expression successfully checked out the files, applied the desired string to the attribute on each resulting object (I did test to make sure it worked on multiple) and then checked the files back in. Thank you for your help!
wt.change2.ChangeActivity2 changeActivity = (wt.change2.ChangeActivity2) primaryBusinessObject;
wt.fc.QueryResult theChangeablesAfterResult = wt.change2.ChangeHelper2.service.getChangeablesAfter(changeActivity,false);
while (theChangeablesAfterResult.hasMoreElements()) {
Object element = theChangeablesAfterResult.nextElement();
if (element instanceof wt.change2.ChangeRecord2) {
wt.change2.ChangeRecord2 changeRecord = (wt.change2.ChangeRecord2) element;
wt.change2.Changeable2 theChangeable = (wt.change2.Changeable2) changeRecord.getChangeable2();
//Get check out folder for the current user in the session
wt.folder.Folder checkoutFolder = wt.vc.wip.WorkInProgressHelper.service.getCheckoutFolder();
//Cast to Workable (required for checkout)
wt.vc.wip.Workable workable = (wt.vc.wip.Workable) theChangeable;
//Check out object
wt.vc.wip.CheckoutLink chklink = wt.vc.wip.WorkInProgressHelper.service.checkout(workable, checkoutFolder, "Check out comment");
wt.epm.EPMDocument wrk = (wt.epm.EPMDocument) chklink.getWorkingCopy();
com.ptc.core.lwc.server.PersistableAdapter adapter = new com.ptc.core.lwc.server.PersistableAdapter(wrk,null,null,new com.ptc.core.meta.common.UpdateOperationIdentifier());
// Load the attribute
adapter.load("Watermark");
// Set the new value
adapter.set("Watermark", "TestWatermark");
// Apply the change
adapter.apply();
// Save to database
PersistenceHelper.manager.modify(wrk);
// Check in object
wt.vc.wip.WorkInProgressHelper.service.checkin(wrk, "Check in comment");
}
}