Module or Macro ?

While it is fairly obvious to choose between writing a macro or developing a module with some practice it may not be at the beginning.

What is a macro ?

A macro is a jython (python on Java virtual machine) program that navigates through, creates or modifies model elements. It can be associated with a menu entry or toolbar button or it can be written and executed directly from the macro window. It can also have its own GUI.

Comparison between macro and module

Feature Module Macro
Model navigation, modification, creation Yes Yes
Definition of stereotype, tag type, note type. Yes No
Definition of property page Yes No
Menu customization Yes Limited : at best it can have it’s own menu entry under ‘Macro’ entry or a button in the tool bar
Menu customization responsibility Module developer Macro user
Definition of parameter Yes No
Definition of palette tool Yes No
Model event handler Yes No
Delivery format A jmdac archive with jar files, icons, internationalized messages A python file

Back to the initial question, a macro will be preferred to a module when:

  • no extension is required (stereotype, etc);
  • its use is limited (model transformation or correction at module version update);
  • sources are not expected to be managed apart (a macro is a python source file)

Developing a module is more time and resource consuming because it involves to tweak XML files, to write Java code, to compile, to package module, etc.

Macros are also impressively fast to process large models. So processing time is definitively not a criterion to choose between macro and module.

The rule of thumb is : Never develop a new module when a macro can do it.

For more information about macros, see Scripts and Macros.

<< Previous Index Next >>