Extensibility

Extensibility
lac52
 
CA Live API Creator
 complements automation with provisions for extending:
 
3
Logic
You can meet requirements that are not solved by reactive logic by defining rules that can invoke JavaScript. 
CA Live API Creator
 applies table-based logic to updates on the table and to updates to the resources that you define explicitly in API Creator over the table.
You can enhance and extend system automation for update and retrieval logic with procedural code using server-side JavaScript. Underlying these extensibility services is the JavaScript object model that 
CA Live API Creator
 creates from your schema. You specify the logic for event rules, formula rules, and validation rules in JavaScript.
For more information about the JavaScript object model, see Row Objects.
JavaScript provides access to the following services:
  • Other JavaScript or Java logic running in the Java Virtual Machine (JVM), by way of Java or JavaScript libraries.
  • External services, by way of REST, Simple Object Access Protocol (SOAP), etc.
The JavaScript code that you write in API Creator runs on your servers. It has access to most of the resources on those servers, such as files and network interfaces. To limit the resources to which your code has access, install 
CA Live API Creator
 running in a container, such as Docker. For more information about installing 
CA Live API Creator
, see Installing and Upgrading.
If you have multiple TeamSpaces with APIs running in these TeamSpaces, the JavaScript code that you write in API Creator can affect the performance of the APIs that are running in other TeamSpaces. For more information about TeamSpaces, see Manage TeamSpaces.
For more information about logic, see Logic.
Code Insertion Points
CA Live API Creator
 fires rules in an order that reflects their dependencies. This order changes as you alter rules and, therefore, affect their dependencies. By contrast, 
CA Live API Creator
 fires events at designated points in the request-processing cycle, as illustrated in the following image:
  code%20insertion%20points.png  
Custom Endpoints
While you define most RESTful endpoints as resources (tables, views, and stored procedures) or functions, you can build services, perhaps unrelated to your database objects, by adding custom endpoints. For example, you can add a custom endpoint that returns JSON or HTML responses or that returns results directly to the client.
For more information about how to determine which endpoint type to define for your API, see Customize your API.
Event Handlers
CA Live API Creator
 invokes event handlers before resource and logic processing begin. You can intercept an incoming request or log the request in a request event. Before 
CA Live API Creator
 sends the response back out to the client, you can reformat the response message in a response event.
For more information about event handlers, see Event Handlers.
JavaScript Resources
Automated SQL operations typically retrieve resources. Instead, you can create a JavaScript resource that 
CA Live API Creator
 executes whenever an API user accesses the resource and returns JSON. You can materialize data using JavaScript, for example, by invoking other REST services to build a request that integrates data from other systems.
For more information about how to create a JavaScript resource, see Define JavaScript Resource Types.
Resource GET Events
CA Live API Creator
 invokes resource GET events as it retrieves rows. For example, add attributes or filter the row. You can inject resource attributes, remove resource attributes, or make REST calls and append the results.
For more information about resource GET events, see Manage Resource Events.
Row Logic Events
CA Live API Creator
 invokes event rules with the current/old rows and the current verb on POST, PUT, and DELETE operations. They can operate on the row, the results of which 
CA Live API Creator
 subjects to reactive logic.
For more information about how to create event rules, see Event Rule Types.
The 
Demo
 API sample includes the 
Audit Purchase Order amount changes
 event rule. This rule shows an example of the JavaScript code for an event.
Invoke JavaScript from Reactive Logic
You specify JavaScript methods for reactive formula and validation expressions. You can access Java code from JavaScript. In the most common case, these are simple expression such as 
row.price * row.quantity
CA Live API Creator
 analyzes your JavaScript for dependencies to provide proper ordering.
You can build conditional logic or you can invoke standard functions such as date arithmetic using JavaScript. You can perform complex processing or you can invoke other SOA services or re-usable Java/JavaScript methods. 
CA Live API Creator
 analyzes the logic for dependencies which are reflected in proper execution order.
For more information:
  • About how 
    CA Live API Creator
     handles ordering and creates JavaScript rows for each base table, see Logic.
  • About how to create a formula rule, Formula Rule Type.
  • About how to specify validation using JavaScript, see Validation Rule Type.
  • About how to access Java code from JavaScript, see Logic Libraries.
Access JVM and Services
Whether you reach JavaScript by way of code insertion points, or reactive logic, you then have the flexibility to access code inside the JVM, or remotely available services.
You can also access Java code from JavaScript.
For more information about how to access Java code from JavaScript, see Logic Libraries.
The following diagram illustrates how server-side JavaScript addresses logic:
  CA Technologies  
System Variables and System Classes
The extension capabilities draw upon system variables and system classes. Discover these services using code completion. System variables define system state, for example, for the request and logic operation, and useful methods. System classes provide helper classes.
For more information about these system variables and classes, see Code Completion.
JavaScript System Variables
Your code requires the following system variables that are set when 
CA Live API Creator
 invokes JavaScript logic:
  • The 
    req
     object. This variable provides access to the API request, such as the current user and the url parameters.
    For more information about this object, see The req Object.
  • Row objects. 
     
    row
     is a JavaScript object representing the current row, with access to attributes and related data, and persistence (with logic enforcement).
    For more information about row objects, see Row Objects.
  • The 
    logicContext
     object. Logic context makes visible key aspects of logic execution.
    For more information about this object, see The logicContext Object.
For more information about the JavaScript context variables that are set when JavaScript logic is invoked, see Quick Reference Guide.
JavaScript System Classes
Your code requires the following JavaScript context variables to operate. 
CA Live API Creator
 initializes the following variables:
  • The 
    SysUtility
     object. You can invoke RESTful services from business logic or resource GET events using the services that this object provides, such as the 
    restGet
    restPut
    restPost
    , and 
    restDelete
     methods.
    For more information about this context variable, see The SysUtility Object.
  • The 
    SysLogic
     object. You also have access to logic services, such as the 
    a
     
    llocateFromTo()
     and 
    InsertIntoFrom()
     methods.
    For more information about this context variable, see The SysLogic Object.
For more information:
Logic Libraries
JavaScript invocations typically provide the row and logic context for your programmatic access. In many cases, you can use libraries of existing functions, such as date routines. You can add libraries to your API.
For more information about logic libraries, see Logic Libraries.
Re-usable Rule Types
You can add rules to the core rules (such as formula, sum, and count, or validation rules). You can define the parameters that the rule types accept. 
CA Live API Creator
 uses extended rules by using the parameters. You can detect logic patterns and you can implement re-usable solutions to these using the extended rules.
The 
InsertIntoFrom()
 system method and allocation rules uses this underlying technology.
For more information about this method, see InsertIntoFrom System Method.
For more information about how to add rules, see Rule Types.
Integrate SOAP with 
CA Live API Creator
 
You can integrate Simple Object Access Protocol (SOAP) with 
CA Live API Creator
 using Java libraries that access SOAP services and return them as REST services in 
CA Live API Creator
.
For more information about viewing an example on how to access SOAP endpoints and return them as REST responses using 
CA Live API Creator
, see the LAC-SOAP2REST example on GitHub.