Salesforce

How to get/set the status of ABLObjects tracking?

« Go Back

Information

 
TitleHow to get/set the status of ABLObjects tracking?
URL NameHow-to-get-set-the-status-of-ABLObjects-tracking
Article Number000110965
EnvironmentProduct: OpenEdge
Version: 11.7.4, 12.0
OS: All Supported Platforms
Question/Problem Description
This article provides an example to demonstrate using the ABL HttpClient libraries for getting and setting ABLObjects tracking from the OE Manager REST API for a specific agent in a Progress AppServer for OpenEdge (PASOE) instance.

How to check for PASOE Memory Leaks using getABLObjects REST API?
How to diagnose ABL memory leaks on PASOE?
 
Steps to Reproduce
Clarifying Information
Error Message
Defect Number
Enhancement Number
Cause
Resolution
The below code takes the following parameters:
  • The type of request (i.e. Get or Set)
  • Host Name in the pcHost parameter
  • Port Number in the pcPort parameter(optional) 
  • Instance name in the pcInstance parameter
  • Agent Id for a specific PASOE agent
  • Whether to turn tracking On or Off
Then calls the appropriate REST API to get or set object tracking.
Note that a Set also calls a Get to verify it properly set the Property.
USING OpenEdge.Net.HTTP.RequestBuilder.
USING openedge.net.http.IHttpRequest.
USING openedge.net.http.IHttpResponse.
USING Progress.Json.ObjectModel.*.
USING OpenEdge.Net.HTTP.ClientBuilder.
USING OpenEdge.Net.HTTP.ResponseBuilder.
USING OpenEdge.Net.HTTP.IHttpClientLibrary.
USING OpenEdge.Net.HTTP.Lib.ClientLibraryBuilder.
USING OpenEdge.Net.HTTP.Credentials.

DEFINE INPUT  PARAMETER pcRequest  AS CHARACTER   NO-UNDO.
DEFINE INPUT  PARAMETER pcHost     AS CHARACTER   NO-UNDO.
DEFINE INPUT  PARAMETER pcPort     AS CHARACTER   NO-UNDO.
DEFINE INPUT  PARAMETER pcInstance AS CHARACTER   NO-UNDO.
DEFINE INPUT  PARAMETER pcAgentId  AS CHARACTER   NO-UNDO.
DEFINE INPUT  PARAMETER plTracking AS LOGICAL     NO-UNDO.

DEFINE VARIABLE cMessage     AS CHARACTER                NO-UNDO.

DEFINE VARIABLE lStatus      AS LOGICAL                  NO-UNDO.

IF pcRequest EQ "Get" THEN
    RUN getObjectTracking ( INPUT pcHost,
                            INPUT pcPort,
                            INPUT pcInstance,
                            INPUT pcAgentId,
                            OUTPUT lStatus,
                            OUTPUT cMessage ).
ELSE
    RUN setObjectTracking ( INPUT pcHost,
                            INPUT pcPort,
                            INPUT pcInstance,
                            INPUT pcAgentId,
                            INPUT plTracking,
                            OUTPUT lStatus,
                            OUTPUT cMessage ).
IF (cMessage GT "") EQ TRUE THEN DO:
    MESSAGE "Request failed with the below error:" SKIP(1)
            cMessage
        VIEW-AS ALERT-BOX INFORMATION BUTTONS OK.
    RETURN.
END.

MESSAGE "Object tracking for agent " pcAgentId " in instance " pcInstance 
        " is: " (IF lStatus THEN "on" ELSE "off")
    VIEW-AS ALERT-BOX INFORMATION BUTTONS OK.

PROCEDURE getObjectTracking:
    DEFINE INPUT  PARAMETER pcHost     AS CHARACTER   NO-UNDO.
    DEFINE INPUT  PARAMETER pcPort     AS CHARACTER   NO-UNDO.
    DEFINE INPUT  PARAMETER pcInstance AS CHARACTER   NO-UNDO.
    DEFINE INPUT  PARAMETER pcAgentId  AS CHARACTER   NO-UNDO.
    DEFINE OUTPUT PARAMETER plStatus   AS LOGICAL     NO-UNDO.
    DEFINE OUTPUT PARAMETER pcMessage  AS CHARACTER   NO-UNDO.
    
    DEFINE VARIABLE cUrl         AS CHARACTER                NO-UNDO.
    
    DEFINE VARIABLE oEntity      AS JsonObject               NO-UNDO.
    DEFINE VARIABLE oRequest     AS IHttpRequest             NO-UNDO.
    DEFINE VARIABLE oResponse    AS IHttpResponse            NO-UNDO.
    DEFINE VARIABLE oLib         AS IHttpClientLibrary       NO-UNDO.
    DEFINE VARIABLE oCredentials AS Credentials              NO-UNDO.    
    
    cUrl = "http://" + pcHost + (IF (pcPort GT "") EQ TRUE THEN ":" + pcPort ELSE "") + 
           "/oemanager/applications/" + pcInstance + "/agents/" +
           pcAgentId + "/ABLObjects/status".

    // You have to login with admin rights to the tomcat manager.  If you've changed
    // the password you'll need to use the modified password
    oCredentials = NEW Credentials("http://localhost","tomcat","tomcat").
    
    ASSIGN oRequest  = RequestBuilder:Get(cUrl)
                                     :UsingBasicAuthentication(oCredentials)
                                     :Request
           oResponse = ResponseBuilder:Build():Response
           oLib      = ClientLibraryBuilder:Build():sslVerifyHost(NO):Library
        NO-ERROR.
        
    ClientBuilder:Build()
                 :UsingLibrary(oLib)
                 :Client:Execute(oRequest,oResponse).
                 
    // Cast the result of the call into a JsonObject. 
    oEntity = CAST(oResponse:Entity,JsonObject).
    
    // Check for error messages and return if one is encountered
    pcMessage = oEntity:GetCharacter("errmsg").
    IF (pcMessage GT "") EQ TRUE THEN
        RETURN.
    
    // For a 'get' request the result field is LOGICAL and indicates whether or
    // not the agent is running.
    plStatus = oEntity:GetLogical("result").    
END PROCEDURE.

PROCEDURE setObjectTracking:
    DEFINE INPUT  PARAMETER pcHost     AS CHARACTER   NO-UNDO.
    DEFINE INPUT  PARAMETER pcPort     AS CHARACTER   NO-UNDO.
    DEFINE INPUT  PARAMETER pcInstance AS CHARACTER   NO-UNDO.
    DEFINE INPUT  PARAMETER pcAgentId  AS CHARACTER   NO-UNDO.
    DEFINE INPUT  PARAMETER plTracking AS LOGICAL     NO-UNDO.
    DEFINE OUTPUT PARAMETER plStatus   AS LOGICAL     NO-UNDO.
    DEFINE OUTPUT PARAMETER pcMessage  AS CHARACTER   NO-UNDO.
    
    DEFINE VARIABLE cUrl         AS CHARACTER                NO-UNDO.
    
    DEFINE VARIABLE oPayload     AS JsonObject               NO-UNDO.
    DEFINE VARIABLE oEntity      AS JsonObject               NO-UNDO.
    DEFINE VARIABLE oRequest     AS IHttpRequest             NO-UNDO.
    DEFINE VARIABLE oResponse    AS IHttpResponse            NO-UNDO.
    DEFINE VARIABLE oLib         AS IHttpClientLibrary       NO-UNDO.
    DEFINE VARIABLE oCredentials AS Credentials              NO-UNDO.    

    // Create a JSON string to either enable or disable object tracking 
    oPayload = NEW JsonObject().
    oPayload:Add('enable',(IF plTracking THEN 'true' ELSE 'false')).
    cUrl = "http://" + pcHost + (IF (pcPort GT "") EQ TRUE THEN ":" + pcPort ELSE "") +
           "/oemanager/applications/" + pcInstance + 
           "/agents/" + pcAgentId + "/ABLObjects/status".
    
    
    // You have to login with admin rights to the tomcat manager.  If you've changed
    // the password you'll need to use the modified password
    oCredentials = NEW Credentials("http://localhost","tomcat","tomcat").
    
    ASSIGN oRequest  = RequestBuilder:Put(cUrl,oPayload)
                                     :ContentType("application/vnd.progress+json")
                                     :UsingBasicAuthentication(oCredentials)
                                     :Request
           oResponse = ResponseBuilder:Build():Response
           oLib      = ClientLibraryBuilder:Build():sslVerifyHost(NO):Library.
           
    ClientBuilder:Build()
                 :UsingLibrary(oLib)
                 :Client:Execute(oRequest,oResponse).
    
    // Cast the result of the call into a JsonObject. 
    oEntity = CAST(oResponse:Entity,JsonObject).
    
    
    // Check for error messages and return if one is encountered
    pcMessage = oEntity:GetCharacter("errmsg").
    IF (pcMessage GT "") EQ TRUE THEN
        RETURN.

    // Call a GET to confirm whether the SET was successful
    RUN getObjectTracking ( INPUT pcHost,
                            INPUT pcPort,
                            INPUT pcInstance,
                            INPUT pcAgentId,
                            OUTPUT plStatus,
                            OUTPUT pcMessage ).
END PROCEDURE.

The RAW JSON Response String generated by the "Get AblObjects" request is below:
{  
   "result":true,
   "versionNo":1,
   "outcome":"SUCCESS",
   "versionStr":"v11.7.4 ( 2018-10-10 )",
   "errmsg":"",
   "operation":"TRACKING ABL OBJECTS"
}

The RAW JSON Response String generated by the "Set AblObjects" request is below:
{  
   "result":true,
   "versionNo":1,
   "outcome":"SUCCESS",
   "versionStr":"v11.7.4 ( 2018-10-10 )",
   "errmsg":"",
   "operation":"TRACK ABL OBJECTS"
}



 
Workaround
Notes
Keyword Phrase
Last Modified Date11/20/2020 7:01 AM

Powered by