THE PLM STATE

The PLM State: Mitigating Complexity of Process Extensions Through Frameworks and RESTful Services

Extensibility – The Good, the Bad, and the Ugly

goodThose whom have worked with Agile PLM for any significant period of time are aware that there are many things it does well and others which it does…well not so well or sometimes not at all. It is not groundbreaking news that Agile PLM offers an extension facility intended to mitigate this concern. Process Extensions and Event Handlers are two common forms of extensions that can be created using the Agile extension facility and come in the following flavors:

  • URL Based Process Extensions
  • Custom Action Process Extensions
  • Custom Event Handlers
  • Custom Autonumber Sources

Regardless of which type of extension you are creating, the common constant is that it will require you to create custom code (Java or Groovy) and/or HTML to bring your extension to life. Depending on the nature of the extension you are creating, this can range from something simple such as a few lines of Java or HTML to something much more involved, like a full blown web application or a complex Java library containing multiple classes and configuration files. As your Agile installation continues to evolve and mature, these extensions tend to proliferate and expand which can make maintenance and enhancement of these extensions a complex and often repetitive task.

Frameworks to the Rescue

picture 1A powerful technique which can help to mitigate the complexity and proliferation of Agile process extensions and event handlers is the employment of software framework principles. The concept of a software framework is similar to the steel skeleton of a skyscraper, in that it provides a uniform structure which can be extended for multiple applications. For example, several floors of a skyscraper may be used for office space, while others may be finished as residential space. Another floor might be finished as a chic restaurant, while the topmost floor might become a popular nightclub with a view of the city.

A software framework, like the skeleton of a skyscraper, provides a common infrastructure on which you can bolt on the specifics of your desired extension. The Spring Framework is a great example of a Java-based software framework which can be leveraged to develop Agile extensions, and provides many utilities and conveniences such as XML based configuration of objects and dependencies, a rich library of utility classes, and a powerful expression language. Another framework oriented technique which provides a considerable amount of mileage is the employment of an abstract Java base class which handles many of the common details of implementing an Agile extension. Your Agile extensions can inherit from this base class to benefit from all of the common functionality it provides, and are only required to implement the functionality unique to your particular application. The abstract Java base class concept can also be combined with the Spring Framework to create a powerful development arsenal which can be leveraged by your organization to create robust Agile extensions. Agile extensions developed using the software framework approach are typically easier to maintain, quicker to create, and require less testing prior to production deployment.

REST Easy

baby

URL based process extensions are another powerful extension facility provided by Agile, largely due to the fact that they allow launching a separate web page from the Agile application in the context of a particular Agile object. For example, you may wish to develop a custom project status report which displays up to the minute status information on a given project within Agile. You might also wish for this report to initially open in a project summary view which includes a couple of slick looking charts, and also allows the user to drill down into the details of individual deliverables and tasks. Traditionally complex URL based process extensions have been created as full blown Java web applications which leverage the Agile Java SDK to extract and potentially update information within Agile. While this technique does get the job done, it also comes with a lot of overhead in the areas of custom Java and web page development as well as infrastructure in having to maintain a separate web application runtime environment. Furthermore, if it is desired to create a new report or application, additional Java classes and web pages must be developed, tested, and deployed within the web application runtime to realize the desired functionality.

The employment of RESTful services provides an alternative to the traditional Java web application approach to construction of URL based process extensions. In the context of an Agile environment, RESTful services are simply HTTP requests which provide functionality such as creation, update, query, and deletion of Agile objects. If you can develop a library of RESTful services which expose common access to your Agile data, you can develop URL based process extensions as simple HTML pages which utilize JavaScript and an AJAX framework such as JQuery to invoke these services. Some common Java frameworks which simplify development of RESTful services are Restlet, Jersey, and Spring MVC.

Summing It Up

ec

Unless the PLM requirements of your organization are fully realized by out of the box Agile, it is a virtual inevitability that you will at some point begin to consider the development of Agile extensions to close or narrow gaps between out of the box Agile functionality and your particular business processes. While this task can be a daunting one, the careful use of software framework and RESTful principles can help you avoid some of the common pitfalls you may encounter in this quest. Lastly when you have a chance, check out our AttributeState and RESTState products on our website as they facilitate the employment of the principles described in this article and may prove valuable tools in transforming that out of the box Agile environment into one custom tailored to your particular business needs.

[clear][clear-line]

Want to learn more about AttributeState:

Live Demo Request

Subscribe to the ZWS Blog

Recent Posts