Please enable JavaScript to view this site.

QPR Knowledge Base 2019.1

Navigation: Developer's Guide > QPR API > The Object Model > QPR Modeling > PGModel Commands

ImportModel

Scroll Prev Top Next More

Revision history:

Introduced in QPR 7.3.1

Last changed in QPR 2016.1

 

Imports the defined model contents or defined child diagram 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 diagram is imported, only the information items, organizations, stores, and resources that are in use in the diagram (or child diagrams) 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

Name

Description

Custom attributes

Information location

Embedded information

Information item type

Organization items

Name

Description

Custom attributes

Type

Stores

Name

Description

Custom attributes

Resources

Name

Description

Custom attributes

Resource type

Units/amount available

Unit cost

Unit

Unit name

Store size

Ordering limit

Order size

Ordering cost

Ordering time

 

Synopsis:

 

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

 

Parameters:

 

ElementId: Integer. ID of the diagram 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 diagram. If given ElementId is not of the type diagram, 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 diagram 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 child diagram 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 child diagrams. In the case the custom attribute's value is TRUE, a child diagram having a matching ID in the source model is not imported, but the customized child diagram 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 child diagram (in the case the target is a child diagram). In the case of a child diagram, version information is also enabled for the child diagram. In the case of importing a child diagram from the source model, version information is copied to the target child diagram only in the case version information is enabled for the child diagram (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 child diagram. 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.

GenerateChangeList: Boolean. If true, the out Log array is generated on all imported elements. The conflict code and description are empty for those elements that have no conflict. Default value is false.

DropOutsideConnector: Boolean. If true, when a  diagram level is imported, the import drops all connectors that are incoming or outgoing outside of the selected diagram or its child elements, i.e. import only connectors whose both ends are in the imported data. Default value is false.

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 diagrams 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:

 

RV_SUCCESS

RV_MODEL_DOES_NOT_EXIST

RV_UNSUPPORTED_FILE_TYPE

RV_CANNOT_OPEN_MODEL

RV_LOGIN_FAILED

RV_UNKNOWN_ERROR

RV_ELEMENT_NAME_NOT_UNIQUE

RV_ELEMENT_NOT_FOUND

RV_NO_RIGHTS_TO_MODEL

RV_ELEMENT_IS_NOT_SUBPROCESS

RV_CUSTOM_ATTRIBUTE_NOT_FOUND

RV_INVALID_CUSTOM_ATTRIBUTE_TYPE

RV_INVALID_CUSTOM_ATTRIBUTE_NAME

RV_APPLICATION_QUIT_CALLED

RV_MODEL_NOT_OPEN

RV_PARAMETER_MISSING

RV_FUNCTION_CANNOT_BE_USED_IN_VALIDATION_SCRIPT

RV_CANNOT_IMPORT_FROM_DEMO_MODEL

 

Example Procedure:

 

Sub Main()

 Dim iResult

 Dim avLog

 Dim sMessage

 Dim i

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

  "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

  Next

  MsgBox sMessage

 End If

End Sub