12.8 Calculator (POST)

Below mentioned table has element name which indicates which type of custom data is passed by enclosing the name and its value in KeyName and KeyValue respectively.

Table 12-9 Calculator

Element name Sub element Data type
CustomUserDefinedStringData KeyName String
  KeyValue String
CustomUserDefinedNumberData KeyName String
  KeyValue Number (Double)
CustomUserDefinedDateData KeyName String
  KeyValue Date(YYYY-MM-DDTHH:MM:SS)
Sample Input/Output XML
<Custom>
    <CustomUserDefinedStringData>
        <KeyName>First Name</KeyName>
        <KeyValue>ABC</KeyValue>
    </CustomUserDefinedStringData>
    <CustomUserDefinedStringData>
        <KeyName>Last Name</KeyName>
        <KeyValue>DEF</KeyValue>
    </CustomUserDefinedStringData>
    <CustomUserDefinedNumberData>
        <KeyName>Phone Number</KeyName>
        <KeyValue>123456987</KeyValue>
    </CustomUserDefinedNumberData>
    <CustomUserDefinedNumberData>
        <KeyName>Age</KeyName>
        <KeyValue>27</KeyValue>
    </CustomUserDefinedNumberData>
    <CustomUserDefinedDateData>
        <KeyName>BirthDate</KeyName>
        <KeyValue>2017-02-24T15:00:43+05:30</KeyValue>
    </CustomUserDefinedDateData>
    <CustomUserDefinedDateData>
        <KeyName>ContractDate</KeyName>
        <KeyValue>2017-02-24T15:00:51+05:30</KeyValue>
    </CustomUserDefinedDateData>
</Custom>
Sample Input/Output JSON
"Custom" : {
    "CustomUserDefinedStringData" : [
        {
            "KeyName" : "First Name",
            "KeyValue" : "Test"
        },
        {
            "KeyName" : "Last Name",
            "KeyValue" : "ABC"
        }
    ],
    "CustomUserDefinedNumberData" : [
        {
            "KeyName" : "Age",
            "KeyValue" : "26"
        },
        {
            "KeyName" : "Phone Number",
            "KeyValue" : "123456987"
        }
    ],
    "CustomUserDefinedDateData" : [
        {
            "KeyName" : "BirthDate",
            "KeyValue" : "2017-02-24T14:52:44+05:30"
        },
        {
            "KeyName" : "ContractDate",
            "KeyValue" : "2017-02-24T14:54:22+05:30"
        }
    ]
}

Below are the package details for Calculator web service

Wrapper package:
xaecal_ew_100_01.xaecal_ew_100_01 (iv_cal_rec IN OUT NOCOPY xae_cal_rec_t,
iv_calculator_type IN VARCHAR2,
iv_result     OUT NUMBER,
iv_err_desc     OUT VARCHAR2).
Main engine package has been modified:
xaecal_em_100_01. xaecal_em_100_01 (iv_cal_rec IN OUT NOCOPY xae_cal_rec_t,
iv_calculator_type IN VARCHAR2,
iv_result     OUT NUMBER,
iv_err_desc     OUT VARCHAR2).

Below are the exit point packages added.

BEFORE:-
xaecal_ex_100_01.CV_CAL_BFR = cmncon_cl_000_01.CUSTOMIZED THEN
xaecal_ex_100_01.cal_bfr(iv_cal_rec ,iv_calculator_type ,iv_result ,iv_err_desc);
REPLACE:-
xaecal_ex_100_01.CV_CAL_REP = cmncon_cl_000_01.CUSTOMIZED THEN
xaecal_ex_100_01.cal_rep(iv_cal_rec ,iv_calculator_type ,iv_result ,iv_err_desc);
AFTER:-
xaecal_ex_100_01.CV_CAL_AFR = cmncon_cl_000_01.CUSTOMIZED THEN
xaecal_ex_100_01.cal_afr(iv_cal_rec ,iv_calculator_type ,iv_result ,iv_err_desc);

Extensible parameters are Tab Type object

CREATE OR REPLACE TYPE xws_att_date_rec_t AS OBJECT
(
    ATT_NAME         VARCHAR2 (30)
    , ATT_VALUE      DATE);
/
CREATE OR REPLACE TYPE xws_att_num_rec_t AS OBJECT
(
    ATT_NAME         VARCHAR2 (30)
    , ATT_VALUE      NUMBER);
);
/
CREATE OR REPLACE TYPE xws_att_str_rec_t AS OBJECT
(
    ATT_NAME         VARCHAR2 (30)
    , ATT_VALUE      VARCHAR2 (4000));
);
/