DataFlex
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_idis obtained fromaccount_nameorder_idis obtained fromcustomer_id- The target
curlcommand usesorder_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
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