Let's describe creating a script in an example. We will create a script showing a message on a program startup. The creation process consists of three steps:

  1. Creating a directory
  2. Writing a script descriptor
  3. Writing a script code


Step #1: Create Directory

In the plugins/com.nomagic.magicdraw.jpython folder, create a scripts sub-folder, and then a folder for the particular script. For example, plugins/com.nomagic.magicdraw.jpython/scripts/example

 

Step #2: Write Script Descriptor

A script descriptor is a file written in XML and named script.xml. The script descriptor provides information about a script file to run, version of script, ID, and other.

In the created directory, create a script.xml file:

    <?xml version="1.0" encoding="UTF-8"?>
    <script
        id="example 1"
        name="Simple menu item"
        version="1.0"
        provider-name="No Magic"
        script-file="main.py"
        requiresApi="1.0">
    </script>

The following table describes the script.xml file structure:

ElementDescription 
script







Attributes
NameDescription
idA scrip ID, should be unique. Used to identify a script. Example: “my.first.script.0”
nameA script name. No strict rules applied to this attribute. Example: “Example script”
versionA script version. Allows numbers separated with one dot value. Examples: “1.0”, “0.1”
provider-nameA script provider name. A company or an author name. Example: "No Magic"
script-fileA relative path to a script file. This file will be executed. Example:”main.py”
requires-apiA program API version required by a script. Example:”1.0”

 

Step #3: Write Script Code

Then in the same directory, create the main.py file:  

from javax.swing import JOptionPane

# Script starts here
print "Starting script, descriptor", pluginDescriptor
JOptionPane.showMessageDialog( None, "I am a script!!!")

 

After saving files, restart your modeling tool. On a program startup, a message dialog should appear.

 

Variables Passed to Script

The program passes the one variable to the script pluginDescriptor. This variable contains information from the parsed script.xml file. A variable is an instance of a com.nomagic.magicdraw.jpython.PythonPluginDescriptor class.

A script can retrieve the script directory and other necessary information from the pluginDescriptor variable. There is no need to change any other fields for this variable.