QPR Installation Instructions



Previous topic Next topic  


Previous topic Next topic JavaScript is required for the print function  

Revision history:

Introduced in QPR 7.3.1

Last changed in QPR 2012.2


Imports the defined model contents or defined subprocess level from the model to the currently open process model under process step given by parameter ElementId. When a whole model is imported, all information items, organizations, stores, and resources are imported. Measures and cases are not imported. When a single process level is imported, only the information items, organizations, stores, and resources that are in use in the process level (or sublevels) are imported. When importing a model again, various attributes and elements can be defined to be updated instead of creating a new element. The following elements and attributes can be updated in import:

Information items



Custom attributes

Information location

Embedded information

Information item type

Organization items



Custom attributes





Custom attributes




Custom attributes

Resource type

Units/amount available

Unit cost


Unit name

Store size

Ordering limit

Order size

Ordering cost

Ordering time




PGModel.ImportModel(ElementId, ImportModel, ImportProcessLevelName|ImportProcessLevelID, Options, out Log)




ElementId: Integer. ID of the subprocess type of process step in the target model where the model is imported to. If this is 0, the imported model is created to top level flow chart. If given ElementId is not of the type subprocess, then an error is returned. In addition, in the case the target level is the main level, also the model description and feedback address are copied from the source model to the target model.

ImportModel: Variant. Server model ID (integer), server model name (string), or a file name (string). Filename can have an absolute or a relative path. If no path is given, function tries to load the import model from the current PG default path. Also server models require the path information to be visible in the case the model is identified by a name string, so for example \\ModelName or \\folder\ModelName are valid values.

ImportProcessLevelName|ImportProcessLevelID: Variant. Name (string) or ID (integer) of source model process level element. In the case this is empty, the whole model is imported.

Options: String. A ";" separated text list of options. The possible options are:

ModelDescription. Either Description (which copies the description of the source model or subprocess to the target element's Description field) or the name of the custom attribute to which the imported model's description is copied.

ModelFeedbackAddress. Either FeedBackAddress (which copies the feedback address of the source model to the target model's Feedback Address field) or the name of the custom attribute to which the imported model's feedback address is copied. Works only when importing full models.

ModelInformationItems. Defines whether imported information items originally connected to the source model's source level are connected to the target model's target level. TRUE or FALSE. FALSE by default.

ModelCustomizedProcessStep. Name of a boolean custom attribute that indicates customized subprocesses. In the case the custom attribute's value is TRUE, a subprocess having a matching ID in the source model is not imported, but the customized subprocess is used instead.

ModelVersionInformation. Defines whether model version information is imported to the target model. In the case a whole model is imported, its version information is copied either to the whole model (in the case the target is a model), or to a subprocess level (in the case the target is a subprocess level). In the case of a subprocess, version information is also enabled for the subprocess. In the case of importing a subprocess from the source model, version information is copied to the target subprocess only in the case version information is enabled for the subprocess (it is not enabled automatically as in importing a whole model). TRUE or FALSE. FALSE by default.

ImportedObjectID: String. Name of a custom attribute used for storing the ID of an imported subprocess. In the case this option is omitted, the ID is stored to a custom attribute named ImportedObjectID. In the case the value is empty (i.e. ImportedObjectID=), the ID is not stored to any custom attribute.

SetAttribute: String. Uses syntax SetAttribute=<Custom attribute name>:Value and sets the value in Value parameter to the custom attibute defined in <Custom attribute name> for all imported elements. This option does not create new custom attributes, i.e. the value is set to only those elements that already have the corresponding custom attribute. The SetAttribute option can be used multiple times to set values for many custom attributes in the same call. Works for boolean, number, text, and memo type of custom attributes.

UpdateMethod: String. This option defines how elements are updated during import. Note that the matching done in the NONE and ALL options depends on the IdentifyBy option. The possible options are:

NONE: If a matching element is found in the target model, but attributes are not the same, a conflict message is written to the log. If an element in the source model is not found in the target model, it is created there.

ALL: If a matching element is found in the target model, but attributes are not the same, the attributes in the target model element are updated to correspond to those in the source model and a notification is written to the log. If an element in the source model is not found in the target model, it is created there.

BYORIGIN: Update only those elements that originate from the source model (i.e. the model has been imported previously and the imported elements are tagged with the source model ID). In the case the model ID defined in an imported element's custom attribute (the name of which is defined in the UpdateByOrigin option) matches the ID of the model that is being imported, the target element is updated and a notification is written to the log, otherwise a new element is created. This requires that also the UpdateByOrigin option is defined.

UpdateByOrigin: String. Name of the custom attribute that contains the ID of the source model. This custom attribute must be of type Number.

IdentifyBy: String. This option defines how duplicate elements are identified from the target model. Note that element types are always identified by the element type symbol. The possible options are:

NAME (default value): Identifies the duplicates by the element names. In addition, updates the element symbol.

SYMBOL: Identifies the duplicates by element symbols.

out Log: Variant array. Log is a two-dimensional variant array containing one entry for each conflict encountered in import. Each entry contains the following information:

Element ID in the currently open model. Integer.

Element ID in the imported model. Integer.

Element name. String.

Conflict code. Integer.

Conflict description. String.


Required Rights:


Full rights for the import's target level and all levels below it (they are deleted during the import), and at least view rights for the import's source level. However, in the case the source level has additional process levels below it and you do not have rights to those levels, the additional levels are ignored in the import.


Return Values:

Below are listed the return values that this function can return:




















Example Procedure:


Sub Main()

 Dim iResult

 Dim avLog

 Dim sMessage

 Dim i

 iResult = PGModel.ImportModel(0, "C:\Source\Misc\Scripting\source.pmf", "", _

  "ModelInformationItems=true;ModelDescription=Description; _

   ModelFeedBackAddress=FeedBackAddress;ImportedObjectId=R5. Imported Id; _

   SetAttribute=Customized:false;SetAttribute=Model Id:123456; _

   SetAttribute=Custom Description:new custom description", avLog)

 If (iResult <> 0) Then

   MsgBox "Could not import model: " + PGApplication.GetErrorMessage(iResult)

 End If

 If (VarType(avLog) <> 0) Then

  sMessage = "Import conflicts:" + vbLf + vbLf

  For i = 0 To UBound(avLog, 1)

    sMessage = sMessage + avLog(i, 2) + " (" + CStr(avLog(i, 0)) + ") - " + _

      avLog(i, 4) + vbLf


  MsgBox sMessage

 End If

End Sub