Skip to content

How to use Shepherd SDK

devsda edited this page Apr 29, 2019 · 2 revisions

Currently, Shepherd provides SDK in Java. Shepherd Java SDK

In this wiki, I will explain how to use SDK for different use-cases.

Register Client :

ShepherdResponse shepherdResponse = shepherdClient.registerClient("dominos");

Response :

If no such client exists,

{  
   "resource_name":"REGISTER_CLIENT",
   "response_time":"2019-04-29 19:04:37",
   "server_name":"Hiteshs-MacBook-Pro.local",
   "message":null,
   "error_message":"Username dominos already exists.",
   "response_data":null
}

If given client already exists,

{  
   "resource_name":"REGISTER_CLIENT",
   "response_time":"2019-04-29 19:04:37",
   "server_name":"Hiteshs-MacBook-Pro.local",
   "message":null,
   "error_message":"Username dominos already exists.",
   "response_data":null
}

Create Endpoint :

String graphFilePath = "./src/test/resources/sample_workflow.xml";
String endpointFilePath = "./src/test/resources/workflow_configuration.json";

ShepherdResponse registerEndpointResponse = shepherdClient.registerEndpoint("dominos", "logistics_dev", graphFilePath, endpointFilePath);

Response :

If endpoint doesn't exists :

{  
   "resource_name":"REGISTER_ENDPOINT",
   "response_time":"2019-04-29 19:14:31",
   "server_name":"Hiteshs-MacBook-Pro.local",
   "message":"Registered endpoint successfully",
   "error_message":null,
   "response_data":{  
      "endpointId":11
   }
}

If endpoint already exists :

   "resource_name":"REGISTER_ENDPOINT",
   "response_time":"2019-04-29 19:13:33",
   "server_name":"Hiteshs-MacBook-Pro.local",
   "message":null,
   "error_message":"Endpoint with name : logistics_dev already exists for client dominos",
   "response_data":null
}

Update Workflow XML File

        String graphFilePath = "./src/test/resources/sample_workflow.xml";

        ShepherdResponse registerEndpointResponse = shepherdClient.updateWorkflowDetails("dominos", "logistics_dev", graphFilePath);

Response -

{  
   "resource_name":"UPDATE_ENDPOINT",
   "response_time":"2019-04-29 19:22:30",
   "server_name":"Hiteshs-MacBook-Pro.local",
   "message":"Update workflow details of endpoint successfully",
   "error_message":null,
   "response_data":null
}

Update Node endpoint details JSON File

        String endpointFilePath = "./src/test/resources/workflow_configuration.json";

        ShepherdResponse registerEndpointResponse = shepherdClient.updateEndpointDetails("dominos", "logistics_dev", endpointFilePath);

Response

{  
   "resource_name":"UPDATE_ENDPOINT",
   "response_time":"2019-04-29 19:23:10",
   "server_name":"Hiteshs-MacBook-Pro.local",
   "message":"Update endpoint details of endpoint successfully",
   "error_message":null,
   "response_data":null
}

Execute Endpoint

        String clientName = "dominos";
        String endpointName = "logistics_dev";

        Map<String, Object> initialPayload = new HashMap<String, Object>()
        {{
            put("size", "medium");
            put("base", "cheese_crust");
            put("name", "farm_hosue");
        }};

        ShepherdResponse executeEndpointResponse = shepherdClient.executeEndpoint(clientName, endpointName, initialPayload);

Response

{  
   "resource_name":"EXECUTE_WORKFLOW",
   "response_time":"2019-04-29 19:26:21",
   "server_name":"Hiteshs-MacBook-Pro.local",
   "message":"Workflow triggered successfully.",
   "error_message":null,
   "response_data":{  
      "execution_id":47
   }
}