The comments section for my earlier post about icon customization in Teamcenter 9.1, kicked off a discussion between me and The Teamcenter Heretic® about the BMIDE. I think a fair summary of Heretic’s position is that the older command line tools from iMan worked very well and that the BMIDE is overcomplicated and unreliable.
Since a discussion of the BMIDE is probably a topic of interest for many of the Dojo’s visitors I thought it should be promoted into its own post. You can review the earlier post’s discussion to catch up. And now I’ll try to lay out my thoughts on the topic.
Was the BMIDE an improvement?
Quoting The Heretic:
The BMIDE is only OK if we accept it as such. The DSA utilities were soooo close to being what we needed but the folks who gave us the BMIDE didn’t take too close a look at it. They came form Enterprise where EVERYTHING is hard. So now we have a tool that is overly complex and unnecessary … the BMIDE works for sure, but is it friendly? Is it suitable to task?
I have to admit that my experience with the command line tools, like dsa_util, is a fraction of The Heretic’s. That said I think there are several things about the BMIDE that are an improvement over what came before:
- I like that the data model definition has been separated from the application itself, making it easier for me to design a data model independent of a live instance of TC to work with.
- I like that there’s one place to define and manage my entire data model, rather than having several different applications or utilities to jump between to do exports and imports
- I like that data model is now stored as simple XML files that I can manage with my source control system (Subversion, for the record). Sure, I could have done exports of various parts of the data model in iMan, but it was something done after the fact and piecemeal.
- I like that they’ve done a better job of cross referencing different areas of the application. For example, I can edit a single naming rule and attach it to all the properties it controls, or I can go to an object’s property view and attach multiple naming rules to a single property.
Regarding the interface itself and its complexity, I am a child of the GUI generation I guess (my first PC came with Windows 3.0). I do appreciate command line tools for speed and accuracy, but I also like being able to navigate around a GUI applications and figure out what to click rather than having to remember 27 command line parameters. I also like having the visual layout of the tree structure for the business objects so I can understand the relationship between them and the inheritance model more easily. I don’t know how you could have an application that does all that the BMIDE does that wasn’t complex. It seems to me that only by breaking things out into chunks, like it was before, could you really simplify things — but then you lose the
big picture view of what is going on.
Are you sure you want to push that button?
Aren’t you afraid every time you have to deploy a template to your systems? I am.
But I’m not always sure that that’s the BMIDE’s fault. From what I’ve seen the same template deployed to two different instances of TC could be fine in one and cause problems in another. For example, I learned the hard way to be careful about changing the type signature of an existing Condition definition. However if the same template was deployed to a system where no such Condition was already defined it would have been simply accepted as a new Condition definition. It seems to me that it’s not so much the BMIDE’s fault as TEM’s and the mechanism by which templates are installed.
What else is wrong?
I have to admit that there are significant design flaws in the BMIDE. The most famous of which is probably the initial requirement that updating Naming Rules and Lists of Values (LOVs) necessitated kicking everyone out of the system to update the template. Supposedly that’s now fixed with a supported Live Update mechanism, but I’ll be honest that I haven’t tried that yet and so I don’t trust it.
Refactoring is Hard
One of my biggest complaints is that it’s very hard to refactor or otherwise make large modifications to the the data model. Just try to move a Business object from underneath one base type to another. Or try to factor out common properties and behaviors from two types into one common, abstract (uninstantiable) base type. It’s not readily supported. Granted, those are not the kind of changes you want to deploy to an existing instance, but if you’re still in the early design and development stage, such rework is perfectly normal.
I’d be remiss to not mention the fact that the BMIDE seems overly buggy, at least in the 8.3 version I primarily work with. I’ve filed several PRs against it myself. It is getting better with each patch, but a lot of the ones I’ve seen should have been caught before it was released to the public.
I could write more, but I think it would be better to get more voices in the conversation at this point. If you have any opinions one way or the other please share them. Here are some questions to consider to get you started:
- Do you use the BMIDE?
- What do you use it for?
- What is your overall opinion of it?
- If there’s anything you like about it, what is it?
- What are your BMIDE complaints?
- How can the BMIDE be improved? Or should it be scrapped? What would replace it?
- Do you use any command line utilities? Which ones?
- What am I wrong about? What haven’t I considered?
- What is the Heretic wrong about?