|
![]() |
Process Commander tracks properties listed in Declare OnChange rules for changed values. After each activity step, and after forward chaining for Declare Expression rules and constraints rules occurs, tracked changes start the activity specified on the OnChange Properties tab.
The activity identified on the OnChange
Properties tab must have an Activity
Type of OnChange
. It can call or branch
to other activities, but only if they too have an
Activity Type of OnChange
.
Your activity can examine the Value List
property pyChangedProperties to discover the
property that changed value. This property is on the page named
pyDeclarativeContext, of class
Code-Pega-DeclarativeContext. This page exists
only while the activity runs.
The primary page passed to OnChange activities is the top-level page.
OnChange processing may start as the result of a user HTTP Post operation. If users complete an HTTP form that changes the value of a property tracked by a Declare OnChange processing, this change is detected.
Use care not to start an
infinite processing loop within declarative rules. For example,
in an OnChange activity, do not update any of the properties
that caused the activity to start. You can to update other
properties in the OnChange activity.
Declare Expression rules do not
evaluate during the execution of an
OnChange
activity. However, do not attempt
in an OnChange activity to overtly set the value of a property
that is the target of a Declare Expression rule.
Similarly, constraints rules do
not evaluate during the execution of an OnChange activity.
During execution of a Declare OnChange rule, the page on
which the rule operates becomes the primary page. The page
keyword PRIMARY
and the results of the
tools.getPrimaryPage() PublicAPI method reflect
this change. When the Declare OnChange rule execution
completes, the primary page of the calling activity resumes as
primary.
Design the OnChange
activity to execute quickly, as some properties may change
values often. Remember that properties may change values (and
thus cause the rule to run) during development and testing
tasks, such as the preview of a harness or flow action form.
Declare OnChange rules may
be expensive (computing several values) compared with Declare
Trigger rules that test the same property. Consider which rule
type better meets your needs. For example, if a value changes
every few seconds but is part of an object that is saved only
hourly on average, a Declare Trigger rule computes a new value
only hourly, not in real time.
Using the Tracer, you can watch the
evaluation of a Declare OnChange rule. Start the Tracer and
select a requestor session. Click the Options
button() and check the
Declare OnChange box in the Event
Types to Trace section. Also check the RuleSet that
contains the rule to be traced.
The statistic Tracked Property Changes on
the full details page of the Performance tool shows how many
property changes have occurred (for the current requestor since
log-in) that are tracked for declarative rules computations.
You can modify the prlogging.xml
file to log
additional details about tracked property changes. See Pega
Developer Network article PRKB-18112
How to identify which properties are tracked for declarative
processing.
![]() |
declaration, forward chaining |
![]() |
Debugging with the Tracer |