9 Replies Latest reply on Dec 18, 2014 5:06 PM by Roger Carribine

    Extending the UFM Diagram Manager

    Ed Blair

      From its appearance it seems that the Underground Facilities Manager (UFM) Diagram Manager is built as a framework to which one might be able to add additional steps.  For example, in addition to the step "Create Duct Banks and Ducts" step I might want to add a step like "Validate Duct-Wall Associations," or "Find available ducts on wall" or whatever.


      However, I can't seem to find any documentation on how one would go about extending the Diagram Manager.   Was my assumption that this thing is extensible incorrect?  Or am I just not looking in the right places?


      Thanks for any info.


        • Re: Extending the UFM Diagram Manager
          Robert Krisher

          That would definintely be interesting.  I'm doing some work for a client who wants to change the way they associated their conduit systems with the diagrams.  Instead of adding in all the ducts/banks after the fact, they want to build the default knockout/termiducts into their diagram so that they can not only see how many conduit are occupied/unoccupied within the structure but they can also see how many additional runs of conduit that structure can support (and which sizes).

          • Re: Extending the UFM Diagram Manager
            Randy Mayes

            Ed, you are exactly right you can add custom steps to that UI with some configuration.  We called it the "Operations Framework" and UFM shares it with Design Optimization.  At one point I had a code sample on how to customize it but I'm not sure what happened to it.  If you can give me a few days I can put something together and send it to you.  It basically involves implementing some interfaces and editing an xml configuration file to add your own operations into the workflow.  

            • Re: Extending the UFM Diagram Manager
              Randy Mayes

              OK guys here's the basic steps you can take to add your own Operation and OperationUI to the UFM UI:


              1. Write a couple of .Net classes that extend Miner.Framework.Operation and Miner.FrameworkUI.OperationUIControl.
                1. OperationUIControl is based on the old Windows.Forms library in .Net, I don't know if you can implement the UI in WPF and get it to work so using. System.Windows.Forms is the safer bet, but you can certainly experiment if you really want to use WPF.
              2. Add the strong name of your operation and it's UI to the "UFMConfiguration.xml" file and place the file in the ArcFM bin folder.
                1. I've put the default UFMConfiguration.xml file we ship with out of the box here.
                2. Our code looks in the "MMBinDir" value in [HKEY_LOCAL_MACHINE\SOFTWARE\Miner and Miner\ArcFM8] for the UFMConfiguration.xml file so if in doubt on where to put it, refer to that key and put it in that folder.
              3. You will have to put your assembly somewhere .Net can find it to load your custom Operation, under the ArcGIS.exe folder is a safe bet or the GAC.  Since the operations framework isn't based on COM you can't rely on COM registration to find your assembly for you.


              That's it in a nutshell, I'm still trying to put together a code sample but this should get you guys started.

                • Re: Extending the UFM Diagram Manager
                  Randy Mayes

                  OK I put together a very simple code sample to show how to create your own operations.  You'll have to add your own UI code and make it actually do something, but this should get you going.  I'll put this in our SDK as well for future reference.  Good luck, let me know if you have anymore questions.

                    • Re: Extending the UFM Diagram Manager
                      Roger Carribine

                      Was anyone able to get the sample working? At 10.2.1 I can see the diagram manager trying to load the custom operation (or more specifically, I can see it error if i mess up my UFMconfiguration.xml config - and no errors when its correct) but I always get a "Failed to get dockable window manager" error from MMDockWinProxy.cpp.


                      At first I thought I messed up my new control.. but I get the same with the sample as well. Anyone out there got this to work?