陈清红
2025-04-14 880f3c0257eeb8c37761d484258fdd102a369a19
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
StaticMethod ReceiveMessage (LibDMF_CommunicationChannelRoot channelRoot_i, String channelName_i, NamedValueTree nvt_i)
{
  TextBody:
  [*
    // Get the Source information from the header of the NVT
    sourceKind := LibInt_MessageAccessor::GetHeaderPropertyAsString( nvt_i, LibDMF_CommunicationChannel::HEADER_SOURCEKIND() );
    sourceName := LibInt_MessageAccessor::GetHeaderPropertyAsString( nvt_i, LibDMF_CommunicationChannel::HEADER_SOURCENAME() );
    
    // Create an IntegrationEvent
    event := channelRoot_i.EventCreate( sourceKind, sourceName, true );
    
    channel := select( channelRoot_i, CommunicationChannel, channel,
                       channel.Name() = channelName_i );
    
    if( not isnull( channel ) )
    {
      isNotificationOnly := LibInt_MessageAccessor::HasHeaderProperty( nvt_i, LibDMF_CommunicationChannel::HEADER_IS_NOTIFICATION() ) and
                            LibInt_MessageAccessor::GetHeaderPropertyAsBoolean( nvt_i, LibDMF_CommunicationChannel::HEADER_IS_NOTIFICATION() );
    
      if( isNotificationOnly )
      {
        channel.NotificationReceive( nvt_i );
      }
      else
      {
        isRequest := LibInt_MessageAccessor::HasHeaderProperty( nvt_i, LibDMF_CommunicationChannel::HEADER_IS_REQUEST() ) and
                     LibInt_MessageAccessor::GetHeaderPropertyAsBoolean( nvt_i, LibDMF_CommunicationChannel::HEADER_IS_REQUEST() );
    
        if( isRequest )
        {
          channel.RequestReceive( nvt_i );
        }
        else
        {
          channel.MessageReceive( nvt_i );
        }
      }
    }
    else
    {
      channelRoot_i.EventLogActivityError( event,
                                           "Received message for unknown Communication Channel",
                                           "Received message for unknown Communication Channel '" + channelName_i + "'" );
    }
  *]
}