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 SendDMConfigurationToSystemsViaSOAP (String systemName_i, String systemQProductName_i, String systemHost_i, 
  Number systemPort_i, String systemDatasetKind_i, String systemDatasetFolder_i, 
  String systemDatasetName_i)
{
  Description: 'Send DataManager configuration to Systems stored in DataManager via SOAP.'
  TextBody:
  [*
    // Send DataManager configuration to Systems
    soapInterface := LibDMF_SOAPClient::CreateInterface();
    
    // Gather DM configuration
    globalParam     := this.GlobalParameters();
    dmHost          := OS::ComputerName();
    dmPort          := CommandLine::Instance().NumberArgument( "webserverport" );
    dmDatasetKind   := globalParam.DM_DatasetKind();
    dmDatasetFolder := globalParam.DM_DatasetFolder();
    dmDatasetName   := globalParam.DM_DatasetName();
    
    // If the system's hostname is the same with the DataManager's hostname, change it to 'localhost' instead.
    // A temporary workaround as SOAP is unable to send to the same machine using absolute hostname.
    soapSystemHost := ifexpr( dmHost = systemHost_i, "localhost", systemHost_i );
    
    // Set the SOAP client interface such that the destination dataset of the System could receive the SOAP message
    LibDMF_Util::SetSOAPClientInterfaceConfiguration( soapInterface,
                                                      soapSystemHost,
                                                      systemPort_i,
                                                      "SOAPServer",
                                                      "ReceiveDataManagerConfiguration",
                                                      systemDatasetKind_i,
                                                      systemDatasetName_i );
    
    logmessage := "Sending DataManager configuration to " + systemName_i +
                  "; Host = '" + systemHost_i +
                  "', Port = '" + [String]systemPort_i +
                  "', Dataset Kind = '" + systemDatasetKind_i +
                  "', Dataset Name = '" + systemDatasetName_i;
    
    // Log this event
    event := this.EventCreate( systemDatasetKind_i, systemDatasetName_i, false );
    this.EventLogActivity( event, logmessage );
    
    soapInterface.ASync_ReceiveDataManagerConfiguration( dmHost, dmPort, dmDatasetKind, dmDatasetFolder, dmDatasetName,
                                                         systemName_i, systemQProductName_i, systemDatasetKind_i, systemDatasetFolder_i, systemDatasetName_i,
                                                         this, this.EventGetID( event ) );
  *]
}