Skip to main content

Open ideas have been reviewed by our Product Management and are open for commenting and voting.

Filter by idea status

Filter by product area

4586 Ideas

langdonms
Contributor
langdonmsContributor

Update Geodatabase Reader to support Feature Classes with Attribute RulesReleased

Esri has new functionality called "Attribute Rules" which store trigger-like behavior in the XML of a feature class with customizable functions. For example, a new asset ID number can be assigned automatically while editing features. As it's stored in the database not at the project level, it is portable and the functionality also persists over published editable web services. Unfortunately, there is no backwards compatibility and the feature classes are no longer viewable in ArcMap or ArcCatalog when these rules are created. It also appears that the FME geodatabase reader is unable to consume these feature classes when the new functionality enabled.Documentation:https://pro.arcgis.com/en/pro-app/help/data/geodatabases/overview/an-overview-of-attribute-rules.htmEsri Video on Attribute Ruleshttps://www.youtube.com/watch?v=-2W1H0xr90oThe rules seem to be stored in the sde.gdb_items table of the database and more specifically in the "definition" XML type field of the feature class row. I created an attribute rule and sequence following this tutorial that adds an asset ID based on an auto-incrementing sequence I named curbseq_agspro to new features. The following XML was appended to the feature class definition XML after using the esri geoprocessing tools:<AttributeRules xsi:type='typens:ArrayOfAttributeRule'><AttributeRule xsi:type='typens:AttributeRule'><ID>3</ID><Name>AssetMgmtLinkID_Txt</Name><Type>esriARTCalculation</Type><EvaluationOrder>1</EvaluationOrder><FieldName>astmgmtlinkid</FieldName><SubtypeCode>-1</SubtypeCode><Description>Update the Asset Mgmt Link ID field with the next sequence value from curbseq_agspro.</Description><ErrorNumber>-1</ErrorNumber><ErrorMessage></ErrorMessage><UserEditable>true</UserEditable><IsEnabled>true</IsEnabled><ReferencesExternalService>false</ReferencesExternalService><ExcludeFromClientEvaluation>false</ExcludeFromClientEvaluation><ScriptExpression>var assetfield = $feature.astmgmtlinkid; IIF(IsEmpty(assetfield), Text(NextSequenceValue("curbseq_agspro")), assetfield);</ScriptExpression><TriggeringEvents xsi:type='typens:ArrayOfString'><String>esriARTEInsert</String><String>esriARTEUpdate</String></TriggeringEvents><CheckParameters xsi:type='typens:PropertySet'><PropertyArray xsi:type='typens:ArrayOfPropertySetProperty'></PropertyArray></CheckParameters><Category>-1</Category><Severity>-1</Severity><Tags>Asset ID</Tags><Batch>false</Batch><RequiredGeodatabaseClientVersion>12.3</RequiredGeodatabaseClientVersion><CreationTime>2020-01-06T21:34:00</CreationTime></AttributeRule></AttributeRules>It would be great if FME could read / write features with this functionality as it's a highly useful ability now to create these rules in an Esri supported manner rather than customized database triggers and I foresee their use expanding among customers.Here is a .gif animation showing the rule in action on ArcGIS Online. Notice the assetid_attrule field is automatically updated with a new value (after I pan/zoom to refresh the data).

mattwilkie
Enthusiast
mattwilkieEnthusiast

Synchronize directories - local, share, sftpArchived

It would be nice to use FME to synchronize contents of directories, where said directories could be any combination of Local (`D:datastuff`), Share (`\\serverdata hings`), and S/FTP (`sftp://example.ca/opendata/lizardness`).Currently we're doing this by using Windows Scheduled Tasks and a variety of scripts utilizing some combination of python, WinSCP, FreeFileSync, and robocopy (depending on what year said script was written). Each of these programs and scripts work well enough for their specific task but I'd like to manage them from the same place we manage our other ETL tasks: FME Server.We could add a sub-process transformer using PythonCaller to any of the above in a workbench but there's no insight into whatever messages the process might emit or ability to respond appropriately to situation X.Alternatively we could recursively use FTPCaller/FileCopy/... for each level of the tree, enumerate contents, and build the parameters from those, but that's a lot of small incremental busy work with meagre gains in each step.Note: I said 'synchronize', but we're only interested in mirroring, making one tree an exact replica of another. A natural extention would be to seek bidirectional synchronization, but that's a much harder problem and I think it's fine/better to add that as a separate idea.A version of this desirable feature was talked about in 2017*, with indication there's an associated Idea, but I couldn't find it, thus this new one.Use Directory and File Pathnames on ftp and sftp?