IMsCalculationChainEntries.AddIterator

Fore Syntax

AddIterator(CycleName: String): IMsCalculationChainIterator;

Fore.NET Syntax

AddIterator(CycleName: string): Prognoz.Platform.Interop.Ms.IMsCalculationChainIterator;

Parameters

CycleName. Name of added cycle.

Description

The AddIterator method adds a cycle to metamodel calculation chain.

Fore Example

Executing the example requires that the repository contains a table dictionary with the TABLE_DICTIONARY identifier and a modeling container with the MODELING_CONTAINER identifier. The container must have a metamodel with the META_MODEL identifier.

Add links to the Dimensions, Metabase, Ms system assemblies.

Sub UserAddIterator;
Var
    pMetabase: IMetabase;
    pModelSpace: IMetabaseObjectDescriptor;
    pMetaModel: IMsMetaModel;
    pChain: IMsCalculationChainEntries;
    pCycle: IMsCalculationChainIterator;
    pDimInstance: IDimInstance;
    pSelection: IDimSelection;
    pParam: IMsModelParam;
Begin
    pMetabase := MetabaseClass.Active;
    
// Get modelling container
    pModelSpace := pMetabase.ItemById("MODELING_CONTAINER");
    
// Get metamodel
    pMetaModel := pMetabase.ItemByIdNamespace("META_MODEL", pModelSpace.Key).Edit As IMsMetaModel;
    
// Get metamodel calculation chain
    pChain := pMetaModel.CalculationChain;
    pMetaModel.Params.Clear;
    
// Create a metamodel parameter
    pParam := pMetaModel.Params.Add;
    pParam.Id := 
"PARAM_ITERATOP";
    pParam.Name := 
"Cyclic parameter";
    
// Bind parameter to table dictionary
    pParam.LinkedObject := pMetabase.ItemById("TABLE_DICTIONARY");
    
// Create a cycle in metamodel
    pCycle := pChain.AddIterator("Cycle");
    pDimInstance := pMetabase.ItemById(
"TABLE_DICTIONARY").Open(NullAs IDimInstance;
    
// Set selection for cycle calculation
    pSelection := pDimInstance.CreateSelection;
    pSelection.SelectAll;
    pCycle.Selection := pSelection;
    
// Set parameter used for cycle calculation
    pCycle.Parameter := pParam;
    
// Save changes
    (pMetaModel As IMetabaseObject).Save;
End Sub UserAddIterator;

After executing the example the cycle with parameter is added to the calculated circuit of metamodel. Cycle calculation is executed by all elements of the dictionary.

Fore.NET Example

The requirements and result of the Fore.NET example execution match with those in the Fore example.

Imports Prognoz.Platform.Interop.Dimensions;
Imports Prognoz.Platform.Interop.Ms;

Public Shared Sub Main(Params: StartParams);
Var
    pMetabase: IMetabase;
    pModelSpace: IMetabaseObjectDescriptor;
    pMetaModel: IMsMetaModel;
    pChain: IMsCalculationChainEntries;
    pCycle: IMsCalculationChainIterator;
    pDimInstance: IDimInstance;
    pSelection: IDimSelection;
    pParam: IMsModelParam;
Begin
    pMetabase := Params.Metabase;
    // Get modeling container
    pModelSpace := pMetabase.ItemById["MODELING_CONTAINER"];
    // Get metamodel
    pMetaModel := pMetabase.ItemByIdNamespace["META_MODEL", pModelSpace.Key].Edit() As IMsMetaModel;
    // Get metamodel calculation chain
    pChain := pMetaModel.CalculationChain;
    pMetaModel.Params.Clear();
    // Create a metamodel parameter
    pParam := pMetaModel.Params.Add();
    pParam.Id := "PARAM_ITERATOP";
    pParam.Name := "Cyclic parameter";
    // Bind parameter to table dictionary
    pParam.LinkedObject := pMetabase.ItemById["TABLE_DICTIONARY"];
    // Create a cycle in metamodel
    pCycle := pChain.AddIterator("Cycle");
    pDimInstance := pMetabase.ItemById["TABLE_DICTIONARY"].Open(NullAs IDimInstance;
    // Set selection for cycle calculation
    pSelection := pDimInstance.CreateSelection();
    pSelection.SelectAll();
    pCycle.Selection := pSelection;
    // Set parameter used for cycle calculation
    pCycle.Parameter := pParam;
    // Save changes
    (pMetaModel As IMetabaseObject).Save();
End Sub;

See also:

IMsCalculationChainEntries