class VKOCalcService { }[SysEntryPointAttribute(true), AifCollectionTypeAttribute('return', Types::Class, classStr(VKOCalcContract)), AifCollectionTypeAttribute('_calcContract', Types::Class, classStr(VKOCalcResponseContract))] public VKOCalcResponseContract calc(VKOCalcContract _calcContract) { VKOCalcResponseContract response = new VKOCalcResponseContract(); real result; int a1 = _calcContract.parmArg1(), a2 = _calcContract.parmArg2(); switch (_calcContract.parmOperation()) { case VKOCalcOperation::add: result = a1 + a2; break; case VKOCalcOperation::sub: result = a1 - a2; break; case VKOCalcOperation::multiply: result = a1 * a2; break; case VKOCalcOperation::divide: result = a1 / a2; break; } response.parmResult(result); return response; }
[DataContractAttribute("Calc")] class VKOCalcContract { int arg1; int arg2; VKOCalcOperation operation; VKOCalcSubContract subCalc; List subList; }[DataMemberAttribute("arg1")] public int parmArg1(int _arg1 = arg1) { arg1 = _arg1; return arg1; }[DataMemberAttribute("arg2")] public int parmArg2(int _arg2 = arg2) { arg2 = _arg2; return arg2; }[DataMemberAttribute("operation")] public int parmOperation(int _operation = operation) { operation = _operation; return operation; }//This parm is just for demonstration on how you can use nested contracts and lists [DataMemberAttribute("subCalc")] public VKOCalcSubContract parmSubCalc(VKOCalcSubContract _subCalc = subCalc) { subCalc = _subCalc; return subCalc; }
[DataContractAttribute("SubCalc")] class VKOCalcSubContract { int a; }[DataMemberAttribute("a")] public int parmA(int _a = a) { a = _a; return a; }
[DataContractAttribute] class VKOCalcResponseContract { real result; }[DataMemberAttribute("result")] public real parmResult(real _result = result) { result = _result; return result; }
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:dat="http://schemas.microsoft.com/dynamics/2010/01/datacontracts" xmlns:arr="http://schemas.microsoft.com/2003/10/Serialization/Arrays" xmlns:tem="http://tempuri.org" xmlns:dyn="http://schemas.datacontract.org/2004/07/Dynamics.Ax.Application"> <soapenv:Header> </soapenv:Header> <soapenv:Body> <tem:VKOCalcServiceCalcRequest> <!--Optional:--> <tem:_calcContract> <!--Optional:--> <dyn:arg1>3</dyn:arg1> <!--Optional:--> <dyn:arg2>4</dyn:arg2> <!--Optional:--> <dyn:operation>0</dyn:operation> </tem:_calcContract> </tem:VKOCalcServiceCalcRequest> </soapenv:Body> </soapenv:Envelope>Response example:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Body> <VKOCalcServiceCalcResponse xmlns="http://tempuri.org"> <response xmlns:b="http://schemas.datacontract.org/2004/07/Dynamics.Ax.Application" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> <b:result>7</b:result> </response> </VKOCalcServiceCalcResponse> </s:Body> </s:Envelope>
DaxOnline.org is free platform that allows you to quickly store and reuse snippets, notes, articles related to Dynamics AX.
Authors are allowed to set their own AdSense units and "buy me a coffee" link.
Join us.