Package com.smartgwt.client.docs
Interface StatePath
public interface StatePath
A path expression identifying a value in a nested Object such as
Process.state,
used both to read a value (as a getter) and to specify where and how a value is
written (as a setter).
A StatePath is a dot-delimited list of segments, where each segment is a
property name, optionally followed by an operator:
- When the path is used as a getter, any segment may end in
[<index>]to extract that element of an Array. - When the path is used as a setter, the last segment may end in one of:
[]– append to an Array (creates the Array if missing){}– shallow merge into an Object, overwriting existing keys{?}– shallow merge into an Object, preserving existing keys (non-clobbering)
"a[0].b"sets a property literally named "a[0]".
Task.setState()/Process.setStateVariable() and
Task.getState()/Task.getInputRecord()/Process.getStateVariable().
Missing intermediate objects are created as needed unless
strictPaths is set, either in the specific API call or on
the
task or process involved. When
strictPaths is enabled, a missing intermediate segment throws an error
instead, as does a missing target for an [], {} or
{?} operator. The final segment of a plain setter path is always created or
replaced.
Examples
Assumeprocess.state starts as:
{
currentDS: {
fields: [ { name:"orderId", type:"integer" } ],
defaults: { timezone:"UTC" }
}
}
- Append
"currentDS.fields[]": { name:"orderDate", type:"date" }
Result:fieldsgains a new element at the end. - Merge (clobber)
"currentDS.defaults{}": { timezone:"PST", dateFormat:"YYYY-MM-DD" }
Result:timezoneis overwritten to "PST";dateFormatis added. - Merge (non-clobber)
"currentDS.defaults{?}": { timezone:"PST", locale:"en-US" }
Result: existingtimezone:"UTC"is preserved;localeis added. - Get default timezone
"currentDS.defaults.timezone"
Result:"UTC" - Get first field type
"currentDS.fields[0].type"
Result:"integer"