Input and output format

You can use JSON for input and output for executed decision operations.
A specific decision runner called JSONDecisionRunner provides facilities to use JSON for input and output of the executed decision operation:
String opName = "LoanValidation";

// Get the specific DecisionRunner for using JSON as input/output
JSONDecisionRunner runner = provider.getDecisionRunner(opName, JSONDecisionRunner.class);

// create the input object from a JSON string
String inAsJSON = ...;
Object in = runner.getInputReader().readValue(inAsJSON);

Object out = runner.execute(in);

// create the JSON string representation of the output object
String outASjson = runner.getOutputWriter().writeValueAsString(out);
This example shows a complete code snippet for executing a decision operation named LoanValidation in a decision service that is packaged in the application class loader. Input and output are JSON strings:
// Create a decision runner provider for decision service archive in the application class loader
DecisionRunnerProvider provider = new ClassLoaderDecisionRunnerProvider
   .Builder()
   .build();

// Get the decision operation runner
JSONDecisionRunner runner = provider.getDecisionRunner("LoanValidation", JSONDecisionRunner.class);

// Get an example of input
Object inExample = runner.createInputExample();
// Convert the example to a JSON string
String inExampleAsJSON = runner.getInputWriter().writeValueAsString(inExample);

// Convert the example JSON string to a Java object
Object in = runner.getInputReader().readValue(inExampleAsJSON);

// Execute the decision operation
Object out = runner.execute(in);
// Convert the output Java object to a JSON string
String outAsJSON = runner.getOutputWriter().writeValueAsString(out);