Skip to main content

ModelCenter Remote Execution Java API 2025 R2

Package com.phoenix_int.pacz.api

Last update: 16.07.2025

PACZ (extension .pacz) is a universal component/workflow format for use in the Phoenix Integration products ModelCeter Remote Execution and ModelCenter Server.

Interface Summary

Interface Description
IComponentConfig Configuration for PACZ file
IInstanceFile Instance file within a component
IRuntimeVariable Component variable interface

Class Summary

Class Description
Environment Environment variables for component configuration

Enum Summary

Enum Description
RunFolderPreference Preference for how files within the .pacz should be handled when running a component.

Package com.phoenix_int.pacz.api.v2 Description

PACZ (extension .pacz) is a universal component/workflow format for use in the Phoenix Integration products ModelCeter Remote Execution and ModelCenter Server. A PACZ is a zip archive with component files and a file containing metadata (extension ".pacj"; see below for details) that specifies its usage.

Note: PACZ files must be created using an archiving tool that supports UTF-8 encoding for filenames.

PACJ Configuration File

Each PACZ file contains an internal PACJ file, which is a metadata file with an extension of ".pacj". This file is a simple text file that contains information about the component/workflow specified in JSON and must always be named "component.pacj". The PACJ format specifies fields that describe the component, and the information it contains is case sensitive. Much of the information in the file is used by many programs to describe the component.

Each PACJ file is broken into three sections: component-specific metadata, information about the variables associated with a component, and information about instance files associated with each component.

Component-specific metadata section

Component-specific metadata contains information about the component from a high level. This information includes a description of the component, what version it is, who authored it, and what icon to present to the user.

See IComponentConfig for the interface representing the component configuration metadata

All fields listed below should be used in the component-specific configuration, unless otherwise specified:

Field name Description Corresponding method
version A human-readable string of the version info IComponentConfig.getVersion()
author The author of this component IComponentConfig.getAuthor()
description A description of this component IComponentConfig.getDescription()
ASComponent The MCRE name of the underlying component IComponentConfig.getASComponent()
icon The file relative to the ".pacj" file (usually stored in the ".pacz" file) to be used as an icon (optional) IComponentConfig.getIconUri()
commandArgs Reserved for future use. Do not specify. IComponentConfig.getCommandLineArguments()
requires Reserved for future use. Must currently be specified as ["analysisserver"] IComponentConfig.getRequiredFeatures()
properties An arbitrary dictionary of values that allows a plug-in writer to store data about the instance without needing to create additional files in the pacz. See the Properties section for more details. IComponentConfig.getProperties()
inputs A list of all input variables.See below for variable definitions. IComponentConfig.getInputs()
outputs A list of all output variables.See below for variable definitions. IComponentConfig.getOutputs()
instanceFiles Reserved for future use. Any specified values will be ignored. IComponentConfig.getInstanceFiles()

Variables section

The Variables section is specified by the inputs and outputs properties and contains information about the variables used in the component. Both inputs and outputs have the same general format and contain specific information about the variable, including the name, type, and other information as specified below.

Input variables should be specified in an array in the field inputs and output variables should be specified in an array in the field outputs.

See IRuntimeVariable for the interface describing variables.

All fields listed below should be used for each variable, unless otherwise specified:

Field name Description Corresponding method
name The name of the variable. (in dotted notation) IRuntimeVariable.getVariableName()
type The type of the variable. (SeeString) IRuntimeVariable.getType()
enumAliases An array containing names for enumerated lists. If this property is specified,enumValuesmust also be specified. (optional) IRuntimeVariableMetadata.getOptionalEnumAliases()
enumValues An array containing values for enumerated lists. If this property is specified,enumAliasesmust also be specified. (optional) IRuntimeVariableMetadata.getOptionalEnumValues()
upperBound The upper bound for this variable. (optional) IRuntimeVariableMetadata.getOptionalUpperBound()
lowerBound The lower bound for this variable. (optional) IRuntimeVariableMetadata.getOptionalLowerBound()
units The units for this variable. (optional) IPHXUnits.getUnits()
description The description for this variable. (optional) IRuntimeVariable.getDescription()
defaultValue A default value to present to the user. IPHXType2.Accept(IVisitor)

Variable type may be specified using one of the following types. Types are case-sensitive and must be written exactly as listed.

Variable types
Double
DoubleArray
Integer
IntegerArray
Boolean
BooleanArray
String
StringArray
File
FileArray

Notes:

  • Default values are not currently supported for variables of typeFileorFileArrayand should be omitted.
  • Array default values should be specified by a string that contains the bounding dimensions of the array enclosed in square brackets, followed by a comma-separated list of values enclosed in curly braces.
  • Enumerated values should be specified in standard JSON format, using square brackets and a list of comma-separated values, with special characters such as quotes escaped by a backslash, for example, "Hi! I'm a PACJ enum value". Note that this format is different from the format used in components and wrappers.
  • PACJ files must be encoded in UTF-8.

Instance Files section

The Instance Files section specifies exactly which files inside of the PACZ archive are important to running the component. This feature is currently unimplemented and will be entirely ignored. However, this feature may be implemented at any time and therefore should be used to help document the internal component.

See IRuntimeVariable for the interface describing instance files.

Instance files should be located in a field called instanceFiles and should be an array of objects, each containing the following values:

Field name Description Corresponding method
name The name of the instance file IInstanceFile.getName()
path The path to the instance file. The environment variable COMPONENT_DIR (which can be substituted in strings using the syntax ${COMPONENT_DIR}) should be used to point to the file relative to the root of the PACZ. IInstanceFile.getPath()

Properties section

The Properties section specifies extra optional settings that affect how the PACZ is run. It may contain any arbitrary values that the PACZ writer wishes to add. Some keys have special meaning:

Property name Description
avgRuntime The amount of time an average run of the PACZ takes to complete, in ISO-8601 duration format (PnDTnHnMn.nS). Examples:
- "PT20.345S" – parses as "20.345 seconds"
- "PT15M" – parses as "15 minutes" (where a minute is 60 seconds)
If the value is missing, empty, whitespace, =0, or not a valid ISO-8601 duration, it is ignored.
phx:timeout How long to let the component run before canceling the run, in ISO-8601 duration format (PnDTnHnMn.nS). Examples:
- "PT20.345S" – parses as "20.345 seconds"
- "PT15M" – parses as "15 minutes" (where a minute is 60 seconds)
The value is optional. If the value is present and non-empty, but =0 or not a valid ISO-8601 duration, it is an error.

Validation

When ModelCenter Remote Execution or ModelCenter Server attempts to load a PACZ file, it will attempt to validate the contents of the PACJ configuration file against the referenced component. The following conditions are checked and must be satisfied in order for the PACZ to be loaded:

  • All variables that are specified in the component must be present in the PACJ configuration.
  • All variables that are specified in the PACJ configuration must be present in the component.
  • The names of the variables must match between the PACJ configuration and the component.
  • The variable types must match between the PACJ configuration and the component.
  • All variables specified as inputs in the PACJ must be inputs in the configuration, and all output variables in the PACJ must be outputs in the component.
  • The default values of variables specified in the PACJ configuration must match the default (or initial) values of variables in the component.

Example PACJ Configuration File


 {
   "version": "1.0",
   "author": "Phoenix Integration",
   "description": "Lunar mission model",
   "ASComponent": "LunarMission",
   "icon": "lunar.png",
   "commandArgs": [],
   "requires": ["java",
      "analysisserver"],
   "properties": {
   },
   "inputs": [{
         "name": "Model.Script.Crew_Size",
         "type": "Integer",
         "defaultValue": 3,
         "lowerBound": 1,
         "upperBound": 6
      },
      {
         "name": "Model.Script.Earth_Entry",
         "type": "String",
         "enumValues": ["direct",
            "aerobraking",
            "propulsive"],
         "enumAliases": ["direct",
            "aerobraking",
            "propulsive"],
         "defaultValue": "direct"
      },
      {
         "name": "Model.Script.Science_Payload_Mass",
         "type": "Double",
         "defaultValue": 300,
         "units": "kg"
      },
      {
         "name": "Model.Script.Single_Stage",
         "type": "Boolean",
         "defaultValue": false
      },
      {
         "name": "Model.Script.Thrust_At_Altitude",
         "type": "DoubleArray",
         "defaultValue": "bounds[3, 2] { 0, 250000, 100, 280700, 350, 312000 }",
         "description": "The rocket nozzle thrust (in N) at various altitudes (in km)"
      },
      {
         "name": "Model.Script.Excel_File",
         "type": "File"
      }],
   "outputs": [{
         "name": "Model.Script.Total_Mission_Cost",
         "type": "Double",
         "defaultValue": 3.47558,
         "units": "$ B"
      },
      {
         "name": "Model.Script.Total_Sample_Return_Mass",
         "type": "Double",
         "defaultValue": 38.2609,
         "units": "kg"
      }],
   "instanceFiles": [{
         "name": "icon",
         "path": "${COMPONENT_DIR}/moon.png"
      },
      {
         "name": "ASComponent",
         "path": "${COMPONENT_DIR}/LunarMission.pxcz"
      }]
}
 

Connect with Ansys