#!perl use Win32::OLE; use strict; use constant cnNoFlags => 0; use constant cnNoCheckpoint => -1; #my $Empty; my $ctMgr; # Container Manager my $aeMgr; # Active Element Manager my $aeTMgr; # Active Element Template Manager my $aSec; # Athena Security Token my $mdi; # Meter Data Interface my $nContractContainerID; # Internal ID of contract my $nMeterProxyID; # Internal ID of new meter proxy # Initialisation of object instances $mdi = Win32::OLE->new('DeviceAndMeterdata.ADASDeviceAndMeterdata.1'); $ctMgr = Win32::OLE->new('Athena.CT.ContainerManager.1'); $aeMgr = Win32::OLE->new('Athena.CT.ActiveElementManager.1'); $aeTMgr = Win32::OLE->new('Athena.CT.ActiveElementTemplateManager.1'); $aSec = Win32::OLE->new('AthenaSecurity.UserSessions.1'); $aSec->ConvergeLogin('Administrator', 'Athena', 0, 666); # --- Main code ------------------------------------------------------------------------------- $nContractContainerID = GetContainerID([['contract_number', 'MyTestContract01']]); $nMeterProxyID = CreateMeterProxy($nContractContainerID, 'Mp_Default', 'MyTestMeterProxy01', GetDeviceID('+SimMeter001')); print 'Meter proxy created having the ID: ' . $nMeterProxyID, "\n"; print "Script Finished\n"; # --------------------------------------------------------------------------------------------- sub GetContainerID { my($paCriteria) = @_; my $rs; $rs = $ctMgr->Search(['ContainerID'], $paCriteria, $Empty, cnNoFlags, cnNoCheckpoint, $aSec); return $rs->Fields('ContainerID'); } # --------------------------------------------------------------------------------------------- sub GetDeviceID { my($psDeviceName) = @_; my $resultset; $resultset = $mdi->FindDevice(['ADAS_DEVICE'], [['ADAS_DEVICE_NAME', $psDeviceName]], $Empty, cnNoFlags); return $resultset->Fields('ADAS_DEVICE'); } # --------------------------------------------------------------------------------------------- sub CreateMeterProxy { my($pnContainerID, $psTemplate, $psProxyName, $pnDeviceID) = @_; my $rs; my $nTemplateID; my ($nCheckoutID, $nProxID); $nProxID = -1; $rs = $aeTMgr->Search(['AETemplateID'], [['AETemplateName', $psTemplate]], $Empty, cnNoFlags, cnNoCheckpoint, $aSec); if (!$rs->EOF) { $nTemplateID = $rs->Fields('AETemplateID'); $rs = $aeTMgr->GetValues($nTemplateID, ['AEName', 'ADAS_ID'], cnNoFlags, cnNoCheckpoint, $aSec); $rs->Fields('AEName') = $psProxyName; #Here is line 60!!! $rs->Fields('ADAS_ID') = $pnDeviceID; $nCheckoutID = $ctMgr->Checkout($pnContainerID, $aSec); $nProxID = $aeMgr->CreateActiveElement($nTemplateID, $nCheckoutID, $rs, $aSec); $ctMgr->Checkin($nCheckoutID, $aSec); } return $nProxID; }