The benefit of excluding Inactive objects in an application.

Should a UI allow or block the use of an object that has been disabled?


We recently had to make that decision in our MES project and chose a consistent policy of excluding inactive objects in all the end user pages. Only the administrative tools and forms designed to edit (and reenable) those objects will allow them to be interacted with.

Your decision could go either way, but here's why we made that specific choice:

 Any good application is going to last for a while.

(Based on experience, bad applications last even longer; because no one wants to get involved in rewriting something that couldn't be done right the first time.)

With a long-lasting application that has customizable "objects" you're going to eventually wind up with some that have legacy properties and mystery values. In an MES these will be things like Work Cells, Equipment, Materials, Routes, etc. 

You know which ones you don't want to touch. You've given the users new maintenance utilities that do proper validation and enforce current business rules... but these old objects have been around since long before then. They rely on deprecated tables and hardcoded conditions that were built in the bad old days. Time is what made them dangerous, and only time will kill them.


Our choice was to treat any object that has been marked as inactive as if it could have been created using outdated methods and have all kinds of inappropriate values. We only allow the end users to interact with it by re-enabling it, and we only allow them to enable it by going through the modern tools that perform validation. 

So, the act of enabling something becomes a checkpoint for consistency and compliance.

The goal is to shift the responsibility to the hands-on administrators of those objects, forcing them to deal with the "Oh, we're going to have to update Work Center X if we're going to use it again." realization, rather than allowing them to proceed straight into an "MES is broken!" situation.


Circumstances will vary, but don't forget that administrative tools for maintaining application objects are also opportunities to validate and enforce consistency of old objects. Approaching that opportunity strategically can increase success, ignore that opportunity and increase risk.

Comments

Popular posts from this blog

Default Browser - set url association with PowerShell

LINQ within a foreach()

Rules of Automation