By | 08 December 2015

New 8.55 Feature – Assigning Application Class PeopleCode to Component Events

I was reading through the 8.55 PeopleTools release notes (GAed December 2015) and noticed a feature that only had a small mention. However, the functionality has the potential to drastically reduce the number of customizations to delivered PeopleCode objects where you need to customize the behavior of delivered components.

If this new functionality works as described, I could re-implement many customizations I have made to delivered components using this new method instead. This would reduce cost of ownership during upgrades. It also is more configuration based.

As of 8.55, there is a new feature that is part of the “Related Content Framework” (RCF) that allows you to attach/map custom Application Class code to component events.

Said another way, you can “inject” code into those component events but have the code live in another place that is completely a “bolt-on” object.

According to PeopleBooks, you can “map”/“attach” custom code to these component events:

  • PostBuild
  • PreBuild
  • SavePostChange
  • SavePreChange
  • Workflow

Component Record level events that are support are:

  • RowDelete
  • RowInit
  • RowInsert
  • RowSelect
  • SaveEdit
  • SavePostChange
  • SavePreChange

It looks like you can choose to run this code either before or after any code that may exists in the event you are attaching to. It says the application class must implement PT_RCF:ServiceInterface and define a single method named execute.

What I am unclear at this point just from reading the documentation is if the custom application class has full access to the component buffer just as if the code was running inside the component event.

There is some example code in the Creating Application Class Service Definitions peoplebook section that seems to show that the class does have access to the full buffer as in that example there is some usage of the %component and getRow() functions and they are also manipulating the buffer data. I have not personally tested this yet so I am exercising some caution.

Update Jan 4, 2016 – It looks like the guys over at psadmin.io got an 8.55 instance running and verified my questions. Checkout their
8.55 – Reduce your Customizations! post. They verified that this code does have full access to the buffer.

I would say at least 50% of the customization to delivered components could be replaced by this method and the upgrade impacts would be reduced.

Limitations

It looks like in 8.55, any injected code into a component will NOT trigger in the context of a Component Interface. For example, if you have injected some code into a delivered component like USERMAINT, that injected code will ONLY trigger for a user in a web browser. If you create a Component Interface backed by that component this injected code will NOT trigger.

This is actually a pretty big limitation and I may need to revise my statement about about 50% of customization being replaced.

Additional Reading

Do you want to become a CI Expert?

If you want to learn more about developing using Component Interface then check out our CI Training Video.