The updateItem
operation updates the values of the repository item’s properties both in the local repository and the remote system. The update is handled transactionally, so that if the update of the remote system fails, the change to the local value will not occur.
This operation uses the IntegrationRepositoryItemDescriptor.updateRemoteItem()
method. If the Integration Repository item descriptor defines a mapping file for the updateItem
operation, then the updateItem
operation creates a MappingRepositoryItem
. If the changed-properties-only
attribute is true
, then the updateItem
operation creates a ChangedPropertyBean
. Otherwise, the IntegrationRepositoryItem
is used.
The input for the updateItem
Command
is either the IntegrationRepositoryItem
, the MappingRepositoryItem
, or the ChangedPropertyBean
as appropriate. It returns a CommandResult
. The updateItem
operation checks if there is an external ID in the CommandResult
returned by the updateItem
Command
. If there is, the updateItem
operation updates the external ID property of the local repository item with the value.
If update-local-with-result
is set to true
, then the Integration Repository looks in the CommandResult
for new property values. Any values that appear in the result will be set on the local value of the item.
If the updateRemoteItem
call times out, the response depends on the setting of the timeout-response
attribute for the updateItem
operation. The possible settings are ROLLBACK, INVALID, UNKNOWN, IGNORE.
updateItem and Derived Properties
If your underlying local repository uses the derived properties feature of the SQL repository and you are using the changed-properties-only
attribute set to true
, then you should define a derived-properties
element to specify how the derived properties are handled. The derived-properties
element is a container for a list of derived properties mapped to some property that is used in the derivation. It ensures that if the value of a property that is one of the derivation expressions of a derived property is changed, the Integration Repository treats the derived property itself as changed as well.
The derived-properties
element can optionally be used as a child element of an update-item Tag. It is a container for one or more property elements, each of which has a name
attribute and a referenced-property
attribute. The name
attribute is the name of a property that can be derived from the referenced-property
. The name
attribute and referenced-property
attribute must both be valid property names defined within the given item descriptor.
If changed-properties-only="true"
in the update-item
element, then whenever the referenced-property
is sent in the update command, the name property will be as well. For example, suppose you have a property named remoteAddress
that can be derived from a property named businessAddress
. By including this derived-properties
element in the update-item
element, then whenever the businessAddress
property is included as a changed property, the remoteAddress
property will also be included as a changed property:
<derived-properties>
<property name="remoteAddress"
referenced-property="businessAddress"/>
</derived-properties>
If you do not configure the derived-properties
element for any derived properties in your item, then a change to a derived property’s expression will not cause the derived property itself to appear as a changed property. See SQL Repository Data Models: Derived Properties in the ATG Repository Guide for more information about derived properties.