Type Reference
Operation Types
| Type | Description | Examples |
|---|---|---|
| Create, Update, Delete | Create, Update or Delete a single instance of a DataElement. Any parameters with an underlying field are are automatically mapped. | #1,#2,#3 |
| BatchCreate, BatchUpdate, BatchDelete | Create, Update or Delete multiple instances of a DataElement in a single call. Any parameters with an underlying field are automatically mapped. | #4,#5,#6,#7 |
| Custom | Operation without predefined implementation. Can be used as a placeholder for custom business logic. | #8 |
| Query | Operation which executes a (possibly native) INSERT/UPDATE query on the dataElement. | #9 |
| Workflow.Trigger (requires workflows) | Operation which can be used as a Workflow trigger in combination with ByDataOperation. | #10 |
Parameter Types
| Type | Description | Examples |
|---|---|---|
| TargetParameter | Targets the current DataElement. Can receive more than one target by setting the multiple flag. | #1, #3, #5, #6, #7, #8, #9, #10 |
| TypedParameter | Adds a parameter with a give valueType. | #8, #9 |
| FieldParameter | Links a parameter to a Field and inherits its type | #1, #2, #4, #5, #7 |
| AssociationParameter | Links parameter to any DataElement as a reference | #8 |
| FileUploadParameter | Links a parameter to a Field which is marked for FileUploads | #1 |
| GroupParameter | Adds a list of another ParameterGroup specified on this DataOperation. | #4, #5 |
Options
Some operations can be further tweaked using options:
UpdateOperationChanges the update implementation to use a sparse query instead of the default entity based update. This prevents accidentally updating fields that were not actually changed by the operation. Primarily useful if there is a need for concurrent updates on a DataElement.
<options>
<persistence.update.sparse/>
</options>
Examples
Ex1. Create Operation
Operation which creates an Address with a street (String) and country (Ln02).
<dataOperation>
<type>Create</type>
<name>register</name>
<parameterGroups>
<parameterGroup>
<parameters>
<parameter type="operations::FieldParameter">
<name>street</name>
<field>contacts::Address::street</field>
</parameter>
<parameter type="operations::FieldParameter">
<name>country</name>
<field>contacts::Address::country</field>
</parameter>
<parameter type="operations::FileUploadParameter">
<name>attachment</name>
<field>contacts::Address::attachment</field>
</parameter>
</parameters>
</parameterGroup>
</parameterGroups>
</dataOperation>
Ex2. Update Operation
Operation which updates an Address with a street (String) and country (Ln02).
<dataOperation>
<type>Update</type>
<name>update</name>
<parameterGroups>
<parameterGroup>
<parameters>
<parameter type="operations::TargetParameter">
<name>target</name>
</parameter>
<parameter type="operations::FieldParameter">
<name>street</name>
<field>contacts::Address::street</field>
</parameter>
<parameter type="operations::FieldParameter">
<name>country</name>
<field>contacts::Address::country</field>
</parameter>
</parameters>
</parameterGroup>
</parameterGroups>
</dataOperation>
Ex3. Delete Operation
Operation which deletes an Address by reference.
<dataOperation>
<type>Delete</type>
<name>remove</name>
<parameterGroups>
<parameterGroup>
<parameters>
<parameter type="operations::TargetParameter">
<name>target</name>
</parameter>
</parameters>
</parameterGroup>
</parameterGroups>
</dataOperation>
Ex4. BatchCreate Operation
Operation which creates multiple Addresses.
<dataOperation>
<type>BatchCreate</type>
<name>batchCreate</name>
<parameterGroups>
<parameterGroup>
<parameters>
<parameter type="operations::GroupParameter">
<name>addresses</name>
<targetGroup>contacts::Address::batchCreate::item</targetGroup>
</parameter>
</parameters>
</parameterGroup>
<parameterGroup>
<name>item</name>
<parameters>
<parameter type="operations::FieldParameter">
<name>street</name>
<field>contacts::Address::street</field>
</parameter>
<parameter type="operations::FieldParameter">
<name>country</name>
<field>contacts::Address::country</field>
</parameter>
</parameters>
</parameterGroup>
</parameterGroups>
</dataOperation>
Ex5. BatchUpdate Operation (items)
Operation which updates multiple Addresses.
<dataOperation>
<type>BatchUpdate</type>
<name>batchUpdate</name>
<parameterGroups>
<parameterGroup>
<parameters>
<parameter type="operations::GroupParameter">
<name>addresses</name>
<targetGroup>contacts::Address::batchCreate::item</targetGroup>
</parameter>
</parameters>
</parameterGroup>
<parameterGroup>
<name>item</name>
<parameters>
<parameter type="operations::TargetParameter">
<name>address</name>
</parameter>
<parameter type="operations::FieldParameter">
<name>street</name>
<field>contacts::Address::street</field>
</parameter>
<parameter type="operations::FieldParameter">
<name>country</name>
<field>contacts::Address::country</field>
</parameter>
</parameters>
</parameterGroup>
</parameterGroups>
</dataOperation>
Ex6. BatchDelete Operation
Operation which deletes multiple Addresses.
<dataOperation>
<type>BatchDelete</type>
<name>batchDelete</name>
<parameterGroups>
<parameterGroup>
<parameters>
<parameter type="operations::TargetParameter">
<name>addresses</name>
<multiple>true</multiple>
</parameter>
</parameters>
</parameterGroup>
</parameterGroups>
</dataOperation>
Ex7. BatchUpdate Operation (targets)
Operation which updates multiple Addresses with fixed values.
<dataOperation>
<type>BatchUpdate</type>
<name>batchDelete</name>
<parameterGroups>
<parameterGroup>
<parameters>
<parameter type="operations::TargetParameter">
<name>addresses</name>
<multiple>true</multiple>
</parameter>
<parameter type="operations::FieldParameter">
<name>street</name>
<field>contacts::Address::street</field>
</parameter>
<parameter type="operations::FieldParameter">
<name>country</name>
<field>contacts::Address::country</field>
</parameter>
</parameters>
</parameterGroup>
</parameterGroups>
</dataOperation>
Ex8. Custom Operation
Operation with an empty performer, provide a custom implementation.
<dataOperation>
<type>Custom</type>
<name>sendMail</name>
<parameterGroups>
<parameterGroup>
<parameters>
<parameter type="operations::TargetParameter">
<name>target</name>
</parameter>
<parameter type="operations::TypedParameter">
<name>emailAddress</name>
<type>String</type>
</parameter>
<parameter type="operations::TypedParameter">
<name>title</name>
<type>String</type>
</parameter>
<parameter type="operations::TypedParameter">
<name>contents</name>
<type>String</type>
</parameter>
<parameter type="operations::AssociationParameter">
<name>sender</name>
<dataElement>account::User</dataElement>
</parameter>
</parameters>
</parameterGroup>
</parameterGroups>
</dataOperation>
Ex9. Query Operation
Operation which executes an JPQL query.
UPDATE com.contacts.Address SET status = :newStatus WHERE status = :expectedStatus AND id = :id;
<dataOperation>
<type>Query</type>
<name>compareAndSetStatus</name>
<parameterGroups>
<parameterGroup>
<parameters>
<parameter type="operations::TargetParameter">
<name>id</name>
</parameter>
<parameter type="operations::TypedParameter">
<name>expectedStatus</name>
<type>String</type>
</parameter>
<parameter type="operations::TypedParameter">
<name>newStatus</name>
<type>String</type>
</parameter>
</parameters>
</parameterGroup>
</parameterGroups>
</dataOperation>
Ex10. Trigger Operation
Operation which triggers a workflow transition.
<dataOperation>
<type>Workflow.Trigger</type>
<name>myTrigger</name>
<parameterGroups>
<parameterGroup>
<parameters>
<parameter type="operations::TargetParameter">
<name>target</name>
</parameter>
</parameters>
</parameterGroup>
</parameterGroups>
</dataOperation>
<!-- ... workflow ... -->
<transition>
<triggers>
<trigger type="operations::ByDataOperation">
<name>by:myTrigger</name>
<dataOperation>contacts::Address::myTrigger</dataOperation>
</trigger>
</triggers>
</transition>