Integration with MDMS service
a. Integration with MDMS - Integration with MDMS requires the following steps to be followed:
i) Add a new MDMS file in MDMS repo. For this guide, a sample MDMS file has already been added which can be found here - https://github.com/egovernments/egov-mdms-data/blob/DEV/data/pb/DIGIT-DEVELOPER-TUTORIAL/VtrCharges.json
ii) Restart MDMS service after adding the new file.
iii) Once restarted, hit the curl mentioned below to verify that the new file has been properly added -
curl --location --request POST 'https://dev.digit.org/egov-mdms-service/v1/_search' \
--header 'Content-Type: application/json' \
--data-raw '{
"RequestInfo": {
"apiId": "asset-services",
"ver": null,
"ts": null,
"action": null,
"did": null,
"key": null,
"msgId": "search with from and to values",
"authToken": "{{devAuth}}"
},
"MdmsCriteria": {
"tenantId": "pb",
"moduleDetails": [
{
"moduleName": "VTR",
"masterDetails": [
{
"name": "RegistrationCharges"
}
]
}
]
}
}'
iv) Once verified, we can call mdms service from within our application and fetch the required master data. For this, create a java class by the name of MdmsUtil
under utils folder. Annotate this class with @Component
and put the following content in the class -
@Autowired
private RestTemplate restTemplate;
@Value("${egov.mdms.host}")
private String mdmsHost;
@Value("${egov.mdms.search.endpoint}")
private String mdmsUrl;
public Integer fetchRegistrationChargesFromMdms(RequestInfo requestInfo, String tenantId) {
StringBuilder uri = new StringBuilder();
uri.append(mdmsHost).append(mdmsUrl);
MdmsCriteriaReq mdmsCriteriaReq = getMdmsRequestForCategoryList(requestInfo, tenantId);
Object response = new HashMap<>();
Integer rate = 0;
try {
response = restTemplate.postForObject(uri.toString(), mdmsCriteriaReq, Map.class);
rate = JsonPath.read(response, "$.MdmsRes.VTR.RegistrationCharges.[0].amount");
}catch(Exception e) {
log.error("Exception occurred while fetching category lists from mdms: ",e);
}
return rate;
}
private MdmsCriteriaReq getMdmsRequestForCategoryList(RequestInfo requestInfo, String tenantId) {
MasterDetail masterDetail = new MasterDetail();
masterDetail.setName("RegistrationCharges");
List<MasterDetail> masterDetailList = new ArrayList<>();
masterDetailList.add(masterDetail);
ModuleDetail moduleDetail = new ModuleDetail();
moduleDetail.setMasterDetails(masterDetailList);
moduleDetail.setModuleName("VTR");
List<ModuleDetail> moduleDetailList = new ArrayList<>();
moduleDetailList.add(moduleDetail);
MdmsCriteria mdmsCriteria = new MdmsCriteria();
mdmsCriteria.setTenantId(tenantId.split("\\.")[0]);
mdmsCriteria.setModuleDetails(moduleDetailList);
MdmsCriteriaReq mdmsCriteriaReq = new MdmsCriteriaReq();
mdmsCriteriaReq.setMdmsCriteria(mdmsCriteria);
mdmsCriteriaReq.setRequestInfo(requestInfo);
return mdmsCriteriaReq;
}
v) Add the following properties in application.properties file -
#mdms urls
egov.mdms.host=https://dev.digit.org
egov.mdms.search.endpoint=/egov-mdms-service/v1/_search