Module Designer



To open the Module designer, open the Profound.js IDE and click New > Module File to add a new Module, or edit an existing file with the extension "module.json."

While you are editing or adding an Module File, the following Module Designer will be presented:

This Module Designer has several sections:

1. Files Tree tab: In this example, you'll see that an Module file (a filename that ends with .module.json) was opened.



2. Routines section: This is a list of Routines stored within this file. Here is where you will select, add, update, copy, and remove routines.



3. General Info section: This is where you will provide information about the selected Routine.

  • Name: This is the name of the routine and how will will reference it in other callers.  It must be unique to this file.

  • Private: Selecting Private, makes this routine only callable by other routines within this Module file.  No other modules, screens, APIs or RPG programs can call it.

  • Summary: This is a short description of what this Routine does.

  • Description: Describes this Routine. This information will help the caller of this Routine as well as future maintainers of this Routine.

  • Output Description: Describes what is being returned by this Routine.



4. Routine Logic section: Use Low-Code steps and plugins to program the selected Routine.



5. Input Parameters and Output Parameters: This is where you will define inputs and outputs for the selected Routine, as well as order and document them.

  • All parameters are validated before running any of the Routine logic.

  • You can add nested child parameters.  Simply add a parameter with the type "object", select it, and click the add parameter icon again. The new parameter will be added as a child.

  • You can also drag-and-drop the parameters to order them as you like.

For each parameter you define, you can specify:

  • Name: Unique name for this parameter (at this level)

  • Data type: The type of value that will be sent to the Module.

    • On input parameters and when "from" is set to "body", a new item becomes available called "object", allowing for complex parameters.

    • If a parameter is defined as an integer and the parameter value contains alpha characters, an error will be returned to the caller before your Module logic.

    • Same is true for all parameters.  All values sent must be convertible to this type.  If not an error is returned to the caller before your Module logic.

  • Required: Check if the input parameter must be passed and must have a valid value.

    • When a parameter is defined as required and the parameter is not passed, an error will be returned to the caller before your Module logic is called.

  • Is an Array: Check if the input parameter should be an Array.

    • If a input parameter is defined as an Array, but parameter value passed is not an array, an array will be created with that value as the only element, and then passed to your Routine logic

    • If a input parameter is not defined as an Array, but parameter value is an array, the first valid value from that array will be passed to your Routine logic

  • Example: An example of what the parameter value should be.  This is an example value not a default value.

  • Description: Describes the parameter.