Skip to end of metadata
Go to start of metadata

The EXTERNAL operator creates an action that implements accessing to an external system

Syntax

EXTERNAL externalCall [PARAMS paramExpr1, ..., paramExprN] [TO propertyId1. ..., propertyIdM]

externalCall - an external call defined by one of the following syntaxes:

HTTP [requestType] connectionStrExpr [BODYURL bodyStrExpr] [HEADERS headersPropertyId] [COOKIES cookiesPropertyId] [HEADERSTO headersToPropertyId] [COOKIESTO cookiesToPropertyId]
SQL connectionStrExpr EXEC execStrExpr
LSF connectionStrExpr lsfExecType execStrExpr

Description

The EXTERNAL operator creates an action that makes a request to an external system.

Parameters

HTTP

Keyword. Specifies that the operator is executing a web server HTTP request.

requestType

Keyword. Defines the method of the HTTP request:

  • POST
  • GET
  • PUT
  • DELETE

The default value is POST.

SQL

Keyword. Specifies that the operator executes an SQL server command or commands.

LSF

Keyword. Specifies that the operator executes an action of another lsFusion server.

connectionStrExpr

Expression. HTTP: http request string. SQL: DBMS connection string. LSF: URL of an lsFusion server (application).

bodyStrExpr

Expression. Continuation of http request string in BODY. Relevant when BODY has > 1 parameter. If not specified, the parameters are passed in multipart format.

headersPropertyId

headersToPropertyId

Property ID containing request headers. The property must have exactly one parameter: the name of the request's header. This parameter must belong to a string class. If the property is not specified, headers are ignored/not set.

cookiesPropertyId

cookiesToPropertyId

Property ID containing request cookies. The property must have exactly one parameter: the name of the cookie. This parameter must belong to a string class. If the property is not specified, cookies are ignored/not set.

lsfExecType

Keyword. Specifies the way of defining the action:

  • EXEC – the name of the action is specified.
  • EVAL – the code of the action is specified in the lsFusion language. It is assumed that this code contains a declaration of an action named run. This is the action that will be called.
  • EVAL ACTION – the action code in the lsFusion language is specified. To access a parameter, the special character $ and the parameter number (starting from 1) are used.

execStr

Expression. SQL: SQL query command(s). LSF: The name of an action or code, depending on how the action is defined.

paramExpr1, ..., paramExprN

List of expressions whose values will be used as the call parameters.

propertyId1, ..., propertyIdM

List of property IDs (without parameters) to which the results will be written.

Examples

 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
 testExportFile = DATA FILE ();

externalHTTP()  { 
    EXTERNAL HTTP GET 'https://www.cs.cmu.edu/~chuck/lennapg/len_std.jpg' TO exportFile; 
    open(exportFile()); 

    EXTERNAL HTTP 'http://tryonline.lsfusion.org/exec?action=getExamples' PARAMS JSONFILE('\{"mode"=1,"locale"="en"\}') TO exportFile; // braces are escaped') TO exportFile; // braces are escaped as they are used in internationalization
    IMPORT FROM exportFile() FIELDS () TEXT caption, TEXT code DO
        MESSAGE 'Example : ' + caption + ', code : ' + code;
        
    EXTERNAL HTTP 'http://tryonline.lsfusion.org/exec?action=doSomething&someprm=$1' BODYURL 'otherprm=$2&andonemore=$3' PARAMS 1,2,'3'; // passes the second and third parameters to BODY url-encoded
}
externalSQL ()  { 
    EXPORT TABLE FROM bc=barcode(Article a) WHERE name(a) LIKE '%Meat%'; // getting all barcodes of products with the name meat
    EXTERNAL SQL 'jdbc:mysql://$1/test?user=root&password=' EXEC 'select price AS pc, articles.barcode AS brc from $2 x JOIN articles ON x.bc=articles.barcode' PARAMS 'localhost',exportFile() TO exportFile; // reading prices for read barcodes
    
    // writing prices for all products with received barcodes
    LOCAL price = INTEGER (INTEGER);
    LOCAL barcode = STRING[30] (INTEGER);
    IMPORT FROM exportFile() TO price=pc,barcode=brc;
    FOR barcode(Article a) = barcode(INTEGER i) DO 
        price(a) <- price(i);
}
externalLSF()  { 
    EXTERNAL LSF 'http://localhost:7651' EXEC 'System.testAction[]'; 
}; 

  • No labels