Categorie: reference
Bijgewerkt: 2026-04-08
actionfield workflow actionfield613
ActionField613
Beschrijving: Start Google Maps and zoom in on either a coordinate or an address. Custom: Nee
Propertiesbewerken
| Property | Type | Accessor |
|---|---|---|
| DomainObject | DomainObject | Root |
| OpenInNewWindow | Boolean | Optional |
Gerelateerde workflowsbewerken
| Workflow | Beschrijving |
|---|---|
DomainObject_ActionField613_CheckGeoCodes |
Start Google Maps and zoom in on either a coordinate or an address (CheckGeoCodes). |
XMLbewerken
<Workflow Name="ActionField613" Version="2025.07.28" WorkflowType="Standard" xmlns="urn:Ultimo.Framework.Workflow-mapping">
<Security EditLevel="10" ViewLevel="20" UserContentLevel="30" />
<Description>Start Google Maps and zoom in on either a coordinate or an address.</Description>
<Properties>
<Property Name="DomainObject" Type="DomainObject" Accessor="Root" Direction="In" />
<Property Name="OpenInNewWindow" Type="Boolean" Accessor="Optional" Direction="In" Default="False" Comment="Set to True to open Google Maps in a new window, defaults to False" />
<Property Name="AddressLine1" Type="String" Accessor="Internal" />
<Property Name="Building" Type="Building" Accessor="Internal" />
<Property Name="City" Type="String" Accessor="Internal" />
<Property Name="Country" Type="String" Accessor="Internal" />
<Property Name="GeocodeX" Type="Decimal?" Accessor="Internal" />
<Property Name="GeocodeY" Type="Decimal?" Accessor="Internal" />
<Property Name="PropertyGeocodeXExists" Type="Boolean" Accessor="Internal" />
<Property Name="PropertyGeocodeYExists" Type="Boolean" Accessor="Internal" />
<Property Name="ZipCode" Type="String" Accessor="Internal" />
</Properties>
<Execution>
<UserContent Name="Pre" />
<Comment><![CDATA[ Preface:
- Because -currently- database columns are not nullable, a set of coordinates is considered meaningful when either one or both coordinates are not 'empty' (effectively zero).
- Coordinates take preference over address when opening Google Maps, as they are considered more precise.
- For building parts there is an optional fallback to building, should no coordinates or address be found on the building part itself. ]]></Comment>
<Validation Name="ValidateGoogleMapsAPIKeyIsSet" Condition="#{Settings.Google.ApiKey} != Empty" MessageCode="3206" />
<Transaction>
<Command Name="Check property GeocodeX" CommandName="HasPropertyOrForeignKey">
<Parameter Name="EntityName" Direction="In" Value="${DomainObject.EntityName}" />
<Parameter Name="PropertyName" Direction="In" Value="GeocodeX" />
<Parameter Name="ThrowExceptionWhenPropertyNotValid" Direction="In" Value="False" />
<Parameter Name="PropertyExists" Direction="Out" OutputProperty="${PropertyGeocodeXExists}" />
</Command>
<Command Name="Check property GeocodeY" CommandName="HasPropertyOrForeignKey">
<Parameter Name="EntityName" Direction="In" Value="${DomainObject.EntityName}" />
<Parameter Name="PropertyName" Direction="In" Value="GeocodeY" />
<Parameter Name="ThrowExceptionWhenPropertyNotValid" Direction="In" Value="False" />
<Parameter Name="PropertyExists" Direction="Out" OutputProperty="${PropertyGeocodeYExists}" />
</Command>
</Transaction>
<When Name="If properties GeocodeX and GeocodeY exist on DomainObject" Condition="${PropertyGeocodeXExists} == True && ${PropertyGeocodeYExists} == True">
<When Name="When one of the coordinates is not 'empty' " Condition="${DomainObject.GeocodeX} != 0 || ${DomainObject.GeocodeY} != 0" Comment="Considered meaningful, see comment above!">
<Assign Property="${GeocodeX}" Value="=#todecimal(${DomainObject.GeocodeX})" />
<Assign Property="${GeocodeY}" Value="=#todecimal(${DomainObject.GeocodeY})" />
<Validation Name="ValidateCoordinatesWithinProperRange" Condition="${GeocodeX} >= -90 && ${GeocodeX} <= 90 && ${GeocodeY} >= -180 && ${GeocodeY} <= 180" MessageCode="3006" />
</When>
</When>
<WorkflowCall Name="DomainObject_ActionField613_CheckGeoCodes" WorkflowName="DomainObject_ActionField613_CheckGeoCodes">
<Parameter Name="DomainObject" Direction="In" Value="${DomainObject}" />
<Parameter Name="GeocodeX" Direction="In" Value="${GeocodeX}" />
<Parameter Name="GeocodeY" Direction="In" Value="${GeocodeY}" />
<Parameter Name="AddressLine1" Direction="Out" OutputProperty="${AddressLine1}" />
<Parameter Name="City" Direction="Out" OutputProperty="${City}" />
<Parameter Name="Country" Direction="Out" OutputProperty="${Country}" />
<Parameter Name="ZipCode" Direction="Out" OutputProperty="${ZipCode}" />
</WorkflowCall>
<When Name="When no coordinates or address found and DomainObject is a building part" Condition="${GeocodeX} == Empty && ${GeocodeY} == Empty && ${AddressLine1} == Empty && ${DomainObject.EntityName} == BuildingPart">
<Assign Name="Set Building" Property="${Building}" Value="${DomainObject.Id.Building}" />
<Choose Name="Check if one of the coordinates on building is not 'empty' or not">
<When Name="When one of the coordinates is not 'empty'" Condition="${Building.GeocodeX} != 0 || ${Building.GeocodeY} != 0" Comment="Considered meaningful, see comment above!">
<Assign Name="Set GeocodeX from building" Property="${GeocodeX}" Value="${Building.GeocodeX}" />
<Assign Name="Set GeocodeY from building" Property="${GeocodeY}" Value="${Building.GeocodeY}" />
<Validation Name="ValidateCoordinatesWithinProperRange" Condition="${GeocodeX} >= -90 && ${GeocodeX} <= 90 && ${GeocodeY} >= -180 && ${GeocodeY} <= 180" MessageCode="3006" />
</When>
<Otherwise Name="Otherwise, use address line 1">
<Assign Name="Set AddressLine1 from building" Property="${AddressLine1}" Value="${Building.AddressLine1}" />
<Assign Name="Set ZipCode from building" Property="${ZipCode}" Value="${Building.ZipCode}" />
<Assign Name="Set City from building" Property="${City}" Value="${Building.City}" />
<Assign Name="Set Country from building" Property="${Country}" Value="${Building.Country.Description?}" />
</Otherwise>
</Choose>
</When>
<Validation Name="ValidateValidCoordinatesOrAddress" Condition="(${GeocodeX} != Empty && ${GeocodeY} != Empty) || ${AddressLine1} != Empty" MessageCode="3006" />
<UserContent Name="Post" />
<Choose Name="Use coordinates or address for Google Maps?">
<When Name="Coordinates" Condition="${GeocodeX} != Empty && ${GeocodeY} != Empty">
<View Name="Url" ViewName="GoogleMaps">
<Parameter Name="latitude" Direction="In" Value="${GeocodeX}" />
<Parameter Name="longitude" Direction="In" Value="${GeocodeY}" />
<Parameter Name="OpenInNewWindow" Direction="In" Value="${OpenInNewWindow}" />
</View>
</When>
<When Name="Address" Condition="${AddressLine1} != Empty">
<View Name="Url" ViewName="GoogleMaps">
<Parameter Name="address" Direction="In" Value="${AddressLine1}, ${ZipCode} ${City}, ${Country}" />
<Parameter Name="OpenInNewWindow" Direction="In" Value="${OpenInNewWindow}" />
</View>
</When>
</Choose>
</Execution>
</Workflow>
Sub-workflow XMLbewerken
DomainObject_ActionField613_CheckGeoCodesbewerken
Beschrijving: Start Google Maps and zoom in on either a coordinate or an address (CheckGeoCodes).
<Workflow Name="DomainObject_ActionField613_CheckGeoCodes" Version="2025.07.28" WorkflowType="Standard" xmlns="urn:Ultimo.Framework.Workflow-mapping">
<Security EditLevel="10" ViewLevel="20" UserContentLevel="30" />
<Description>Start Google Maps and zoom in on either a coordinate or an address (CheckGeoCodes).</Description>
<Properties>
<Property Name="DomainObject" Type="DomainObject" Accessor="Root" Direction="In" />
<Property Name="GeocodeX" Type="Decimal?" Accessor="Optional" Direction="In" />
<Property Name="GeocodeY" Type="Decimal?" Accessor="Optional" Direction="In" />
<Property Name="AddressLine1" Type="String" Accessor="Optional" Direction="Out" />
<Property Name="City" Type="String" Accessor="Optional" Direction="Out" />
<Property Name="Country" Type="String" Accessor="Optional" Direction="Out" />
<Property Name="ZipCode" Type="String" Accessor="Optional" Direction="Out" />
<Property Name="PropertyAddressLine1Exists" Type="Boolean" Accessor="Internal" />
<Property Name="PropertyCityExists" Type="Boolean" Accessor="Internal" />
<Property Name="PropertyCountryExists" Type="Boolean" Accessor="Internal" />
<Property Name="PropertyZipCodeExists" Type="Boolean" Accessor="Internal" />
</Properties>
<Execution>
<UserContent Name="Pre" />
<When Name="When no valid coordinates found" Condition="${GeocodeX} == Empty && ${GeocodeY} == Empty">
<Transaction>
<Command Name="Check property AddressLine1" CommandName="HasPropertyOrForeignKey">
<Parameter Name="EntityName" Direction="In" Value="${DomainObject.EntityName}" />
<Parameter Name="PropertyName" Direction="In" Value="AddressLine1" />
<Parameter Name="ThrowExceptionWhenPropertyNotValid" Direction="In" Value="False" />
<Parameter Name="PropertyExists" Direction="Out" OutputProperty="${PropertyAddressLine1Exists}" />
</Command>
<Command Name="Check property ZipCode" CommandName="HasPropertyOrForeignKey">
<Parameter Name="EntityName" Direction="In" Value="${DomainObject.EntityName}" />
<Parameter Name="PropertyName" Direction="In" Value="ZipCode" />
<Parameter Name="ThrowExceptionWhenPropertyNotValid" Direction="In" Value="False" />
<Parameter Name="PropertyExists" Direction="Out" OutputProperty="${PropertyZipCodeExists}" />
</Command>
<Command Name="Check property City" CommandName="HasPropertyOrForeignKey">
<Parameter Name="EntityName" Direction="In" Value="${DomainObject.EntityName}" />
<Parameter Name="PropertyName" Direction="In" Value="City" />
<Parameter Name="ThrowExceptionWhenPropertyNotValid" Direction="In" Value="False" />
<Parameter Name="PropertyExists" Direction="Out" OutputProperty="${PropertyCityExists}" />
</Command>
<Command Name="Check foreign key Country with property Description" CommandName="HasPropertyOrForeignKey">
<Parameter Name="EntityName" Direction="In" Value="${DomainObject.EntityName}" />
<Parameter Name="PropertyName" Direction="In" Value="Country.Description" />
<Parameter Name="ThrowExceptionWhenPropertyNotValid" Direction="In" Value="False" />
<Parameter Name="PropertyExists" Direction="Out" OutputProperty="${PropertyCountryExists}" />
</Command>
</Transaction>
<When Name="If property AddressLine1 exists on DomainObject and it's not empty" Condition="${PropertyAddressLine1Exists} == True && ${DomainObject.AddressLine1} != Empty">
<Assign Property="${AddressLine1}" Value="${DomainObject.AddressLine1}" />
</When>
<When Name="If property ZipCode exists on DomainObject and it's not empty" Condition="${PropertyZipCodeExists} == True && ${DomainObject.ZipCode} != Empty">
<Assign Property="${ZipCode}" Value="${DomainObject.ZipCode}" />
</When>
<When Name="If property City exists on DomainObject and it's not empty" Condition="${PropertyCityExists} == True && ${DomainObject.City} != Empty">
<Assign Property="${City}" Value="${DomainObject.City}" />
</When>
<When Name="If property Country exists on DomainObject and it's not empty" Condition="${PropertyCountryExists} == True && ${DomainObject.Country.Description?} != Empty">
<Assign Property="${Country}" Value="${DomainObject.Country.Description}" />
</When>
</When>
<UserContent Name="Post" />
</Execution>
</Workflow>