GeoEvent Processor - Update Feature, include datetime check

07-03-2014 05:00 PM
New Contributor II

In GeoEvent Processor messages processed from source system can invariably be not in datetime order i.e. each new message was captured after the last message.  At present the update a Feature Connector for GEP will update the database with the last feature recieved/processed in a GEP service. 

On inspecting the TRACE logging for GEP the update a feature connector makes two HTTP calls to the feature service firstly to get the ObjectID to update, then the actual 'update a feature' call/processed.

What would be really helpful is if there was an option to choose a DateTime field in the destination feature class for the connector to check with the outgoing GeoEventDefinition DateTime (Tag: TIME_START).  This could be added to the connector's config settings and could be kept optional.  The first call to get the ObjectID of a feature could also pull back the DateTime field and the connector would then check if the Event DateTime in the GED is greater than the Feature date time.  This would ensure that only the very latest information is updated for events.


1 Comment
Jon -

Thank you for your feedback and taking the time to submit this enhancement as an idea. The product team has created a work item with the following proposed acceptance criteria. You can refer to this as item #960 in the product team's GitHub repository if you want to provide additional feedback or inquire as to the enhancement's status.

The property UI will have a new dropdown property for Update Sequence Time Field. From the dropdown, user can choose an existing esriFieldTypeDate attribute from the the feature layer. If the new property is left unspecified, the behavior will be as it is today; the date/time an event is received will drive whether or not a request is made by GeoEvent to update a feature in the targeted feature class.

If the user chooses a field (e.g. a feature attribute named 'timefield') the connector will do the following:

-- A --
Update its internal cache when an event with a given TRACK_ID is received only if the event's 'timefield' value is greater than an event record already in the cache.

-- B --
When iterating through its internal cache to create a transaction request, consider not only each event's TRACK_ID but also the event's 'timefield' value so that features in the targeted feature class are only updated if the event's date/time is greater than the date/time of the existing feature.