You can use EditableVariables to control which variables from the WorkItem object are assimilated back into the workflow. The classic usage of this definition is to control which variables can be edited by the approver. EditableVariables is most useful during parallel approvals to prevent two approvers from overwriting the same data. Make sure you read the note regarding ExposedVariables.
<ExposedVariables> <List> <String>userView.accounts[Lighthouse]</String> <String>userView.waveset.email</String> </List> </ExposedVariables> <!-- Only the firstname, lastname fields should be assimilated from the WorkItem --> <-- Note the inclusion of the formButton variable which is used to store the button value --> <EditableVariables> <List> <String>userView.accounts[Lighthouse].firstname</String> <String>userView.accounts[Lighthouse].lastname</String> <String>formButton</String> </List> </EditableVariables>
<Field button='true'> <Display class='Button'> <Property name='name' value='variables.formButton'/> <Property name='label' value='Submit'/> <Property name='command' value='Save'/> <Property name='value' value='submit'/> </Display> </Field>
To debug, see workflow.fileTrace attribute of the System Configuration object to identify which variables are being assimilated back into Workflow from the view. ViewVariables is used to control which variables represent view objects which should be refreshed when a refreshView operation is executed from the workItemEdit.jsp page. In general a refreshView operation reloads the view data from all of its sources such as resource adapters.