Is Read-Only Data Page really a read only page ?
I'm a little confused. From my tests, it looks like a read-only data page may not always be a really read-only one.
I've created a data page with below spec:
- Scope: Thread,
- Edit mode : "Read Only",
- Structure: List (pages of concrete -Data class),
- Data source: report definition on -Data class,
- One input parameter passed to above report definition.
Data page looks normal, until I've tried accidentally update its data with a data transform. I just did something like this:
ForEachPageIn{ D_Tester[ID:"1"].pxResults } : Set .pyTransientText = "aValue"
And a surprise was that it works, data in a "read-only" data page were changed!
As an additional test I've added a second data source to the same data page (and an additional param responsible to point to proper data source). The second datasource was just a data transform returning a list of objects of the same class. Now, data page called with a param which chooses
the second data source behaves correctly, when I tried to run the same code to change its data I got expected exception:
The page or property D_Tester_pa611332804608059pz.pxResults(1).pyTransientText is read-only, and cannot be modified.
Calling method: com.pega.pegarules.data.internal.clipboard.ClipboardPropertyStrMinFeatureImpl.setValueOverride(Object)
I'm a little confused. From my tests, it looks like a read-only data page may not always be a really read-only one.
I've created a data page with below spec:
- Scope: Thread,
- Edit mode : "Read Only",
- Structure: List (pages of concrete -Data class),
- Data source: report definition on -Data class,
- One input parameter passed to above report definition.
Data page looks normal, until I've tried accidentally update its data with a data transform. I just did something like this:
ForEachPageIn{ D_Tester[ID:"1"].pxResults } : Set .pyTransientText = "aValue"
And a surprise was that it works, data in a "read-only" data page were changed!
As an additional test I've added a second data source to the same data page (and an additional param responsible to point to proper data source). The second datasource was just a data transform returning a list of objects of the same class. Now, data page called with a param which chooses
the second data source behaves correctly, when I tried to run the same code to change its data I got expected exception:
The page or property D_Tester_pa611332804608059pz.pxResults(1).pyTransientText is read-only, and cannot be modified.
Calling method: com.pega.pegarules.data.internal.clipboard.ClipboardPropertyStrMinFeatureImpl.setValueOverride(Object)
So, currently I have two instances of the same data page called with two different params, first is really read-only but the second,sourced with
a report definition, is not read-only. I checked that I may change only data in .pxResults page list, trying to perform something like :
Set D_Tester[ID:"1"].pyTransientText = "aValue"
returns expected exception in both cases.
Has anyone seen such a behavior? Am I missing something? My Platform version in 7.2.1.