Sample code for 30+ languages & platforms
DataFlex

Viewing a Simple Three-Step Execution Plan

See more CURL Examples

This example demonstrates a straightforward, valid dependency chain that results in a three-step execution plan. The goal is not to execute the requests, but to inspect how the plan is constructed using ExaminePlan.

The target curl command requires {{order_id}}. A helper function is defined to produce order_id, but it depends on customer_id. Another helper function produces customer_id, which depends on account_name.

Because account_name is provided as a known input, the dependency chain can be fully resolved:

  • customer_id is obtained from account_name
  • order_id is obtained from customer_id
  • The target curl command uses order_id

When ExaminePlan is called, it builds and returns a three-step execution plan showing the order in which each function would be executed.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoHttpCurl
    String sTargetCurl
    String sFnName
    Variant vPlanJson
    Handle hoPlanJson
    String sTemp1

    Move False To iSuccess

    Get Create (RefClass(cComChilkatHttpCurl)) To hoHttpCurl
    If (Not(IsComObjectCreated(hoHttpCurl))) Begin
        Send CreateComObject of hoHttpCurl
    End

    // The target curl command requires {{order_id}}.
    Move "curl -X GET https://api.example.com/orders/{{order_id}}" To sTargetCurl

    // Define a helper function that produces order_id from customer_id.
    Move "getOrderId" To sFnName
    Get ComAddFunction Of hoHttpCurl sFnName "curl -X GET https://api.example.com/order-id?customer={{customer_id}}" To iSuccess
    Get ComAddOutput Of hoHttpCurl sFnName "order.id" "order_id" To iSuccess

    // Define a helper function that produces customer_id from account_name.
    Move "getCustomerId" To sFnName
    Get ComAddFunction Of hoHttpCurl sFnName "curl -X GET https://api.example.com/customer-id?account={{account_name}}" To iSuccess
    Get ComAddOutput Of hoHttpCurl sFnName "customer.id" "customer_id" To iSuccess

    // Provide the starting known input.
    Send ComSetVar To hoHttpCurl "account_name" "acme"

    // Examine the execution plan without running any requests.
    Get Create (RefClass(cComChilkatJsonObject)) To hoPlanJson
    If (Not(IsComObjectCreated(hoPlanJson))) Begin
        Send CreateComObject of hoPlanJson
    End
    Set ComEmitCompact Of hoPlanJson To False

    Get pvComObject of hoPlanJson to vPlanJson
    Get ComExaminePlan Of hoHttpCurl sTargetCurl vPlanJson To iSuccess

    // Success is expected to be True.
    Showln "success = " iSuccess

    Get ComEmit Of hoPlanJson To sTemp1
    Showln sTemp1

    // Expected result:
    // 
    // {
    //   "plan": [{
    //     "function": "getCustomerId",
    //     "inputs": ["account_name"],
    //     "outputs": ["customer_id"]
    //   },{
    //     "function": "getOrderId",
    //     "inputs": ["customer_id"],
    //     "outputs": ["order_id"]
    //   },{
    //     "function": "targetCurl",
    //     "inputs": ["order_id"],
    //     "outputs": []
    //   }]
    // }


End_Procedure