lazhen
2025-01-09 8afe90b633046db39042aada36b88193062f8cff
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
Quintiq file version 2.0
#parent: #root
Method SendMetadataRequestGetChannelsMetadata (LibDEF_Systems targets_i)
{
  Description: 'Send a Metadata message for requesting Metadata of the local Channels.'
  TextBody:
  [*
    // Jacky CHAN May-13-2016 (created)
    // for local System, request SyncMetadata from DataRepository
    dataBroker     := this.DataBroker();
    hasLocalSystem := false;
    traverse( targets_i, Elements, target,
              target.GUID() = this.DataBroker().SystemGUID() )
    {
      targets_i.Remove( target );
      hasLocalSystem := true;
    }
    
    if( hasLocalSystem )
    {
      // request sync from DataRepository
      LibDEF_DataRepository::SyncToDataBroker( false );
    }
    
    if( targets_i.Size() > 0 )
    {
      nvt := LibDEF_DataAccessor::CreateMessageMetadata();
    
      // define Type
      LibDEF_DataAccessor::SetMetadataHeaderProperty( nvt, LibDEF_DataAccessor::HEADER_TYPE(), LibDEF_DataAccessor::TYPE_METADATA_GETCHANNELSMETADATA() );
    
      // export ChannelMetas
      nvBody := LibDEF_DataAccessor::GetMetadataBody( nvt );
      traverse( this, ChannelMeta, channelMeta )
      {
        NamedValueTreeIO::Export( channelMeta, nvt, nvBody, false );
      }
    
      traverse( targets_i, Elements, target )
      {
        event := dataBroker.EventCreate( target, false );
        LibDEF_Util::EventLog( event, "Requesting system metadata" );
    
        dataBroker.SendMessage( target, nvt, LibDEF_DataAccessor::KIND_REQUEST(), event );
      }
    }
  *]
}