Quintiq file version 2.0 
 | 
#parent: #root 
 | 
Method SendMetadataSuccessGetChannelsMetadata (Strings channelNames_i, LibDEF_System target_i, LibDEF_IntegrationEvent event_i) 
 | 
{ 
 | 
  Description: 'Send a Metadata message for replying with Metadata of the requested Channels.' 
 | 
  TextBody: 
 | 
  [* 
 | 
    // Jacky CHAN May-13-2016 (created) 
 | 
    dataBroker := this.DataBroker(); 
 | 
     
 | 
    // This message could be send as a reply of a request, or is triggered by another message. 
 | 
    // In the latter case, a new Event should be created (in which the argument event_i should be null) 
 | 
    if( isnull( event_i ) ) 
 | 
    { 
 | 
      event_i := dataBroker.EventCreate( target_i, false ); 
 | 
    } 
 | 
     
 | 
    nvt := LibDEF_DataAccessor::CreateMessageMetadata(); 
 | 
     
 | 
    // define Type 
 | 
    LibDEF_DataAccessor::SetMetadataHeaderProperty( nvt, LibDEF_DataAccessor::HEADER_TYPE(), LibDEF_DataAccessor::TYPE_METADATA_GETCHANNELSMETADATA() ); 
 | 
     
 | 
    // export SetTypeMetas, only for matching channels 
 | 
    nvBody := LibDEF_DataAccessor::GetMetadataBody( nvt ); 
 | 
    traverse( this, SetTypeMeta, setTypeMeta, 
 | 
              exists( channelNames_i, Elements, channelName, setTypeMeta.ChannelName() = channelName ) ) 
 | 
    { 
 | 
      // ShallowCopy is used to prevent owned objects to be exported into NVT. 
 | 
      setTypeCopy := setTypeMeta.ShallowCopy(); 
 | 
      NamedValueTreeIO::Export( setTypeCopy, nvt, nvBody, false ); 
 | 
    } 
 | 
    // export SetMetas, only for matching channels 
 | 
    traverse( this, SetTypeMeta.SetMeta, setMeta, 
 | 
              exists( channelNames_i, Elements, channelName, setMeta.ChannelName() = channelName ) ) 
 | 
    { 
 | 
      // ShallowCopy is used to prevent owned objects to be exported into NVT. 
 | 
      setCopy := setMeta.ShallowCopy(); 
 | 
      NamedValueTreeIO::Export( setCopy, nvt, nvBody, false ); 
 | 
    } 
 | 
     
 | 
    LibDEF_Util::EventLog( event_i, "Sending system metadata" ); 
 | 
     
 | 
    dataBroker.SendMessage( target_i, nvt, LibDEF_DataAccessor::KIND_SUCCESS(), event_i ); 
 | 
  *] 
 | 
} 
 |