description |
---|
Describes how to integrate with DIGIT's ID Gen service |
This page provides the steps to integrate with the IDGen Service. Each application needs to have a unique ID. The IDGen service generates these unique IDs. ID format can be customised via configuration in MDMS.
- Add the ID format that needs to be generated in this file - Id Format Mdms File. The following config has been added for this module:
{
"format": "PB-BTR-[cy:yyyy-MM-dd]-[SEQ_EG_BTR_ID]",
"idname": "btr.registrationid"
}
- Restart the IDGen service and MDMS service and port-forward IDGen service to port 8285:
kubectl port-forward <IDGEN_SERVICE_POD_NAME> 8285:8080
{% hint style="info" %} Note that you can set the ID format in the application.properties file of IDGen service and run the service locally if you don't have access to a DIGIT environment. {% endhint %}
- Hit the below curl to verify that the format is added properly. The "ID" name needs to match exactly with what was added in MDMS.
{% code lineNumbers="true" %}
curl --location --request POST 'http://localhost:8285/egov-idgen/id/_generate' \
--header 'Content-Type: application/json' \
--data-raw '{
"RequestInfo": {
"apiId": "string",
"ver": "string",
"ts": null,
"action": "string",
"did": "string",
"key": "string",
"msgId": "string",
"authToken": "6456b2cf-49ca-47c7-b7b6-c179f19614c7",
"correlationId": "e721639b-c095-40b3-86e2-acecb2cb6efb",
"userInfo": {
"id": 23299,
"uuid": "e721639b-c095-40b3-86e2-acecb2cb6efb",
"userName": "9337682030",
"name": "Abhilash Seth",
"type": "EMPLOYEE",
"mobileNumber": "9337682030",
"emailId": "[email protected]",
"roles": [
{
"id": 281,
"name": "Employee"
}
]
}
},
"idRequests": [
{
"tenantId": "pb.amritsar",
"idName": "btr.registrationid"
}
]
}'
{% endcode %}
-
Once verified, we can call the ID generation service from within our application and generate the registrationId.
-
Add the following model POJOs under
models
folder:IdGenerationRequest.java
package digit.web.models;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.egov.common.contract.request.RequestInfo;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class IdGenerationRequest {
@JsonProperty("RequestInfo")
private RequestInfo requestInfo;
private List<IdRequest> idRequests;
}
IdGenerationResponse.java
package digit.web.models;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.egov.common.contract.response.ResponseInfo;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class IdGenerationResponse {
private ResponseInfo responseInfo;
private List<IdResponse> idResponses;
}
IdRequest.java
package digit.web.models;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.validation.constraints.NotNull;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class IdRequest {
@JsonProperty("idName")
@NotNull
private String idName;
@NotNull
@JsonProperty("tenantId")
private String tenantId;
@JsonProperty("format")
private String format;
}
IdResponse.java
package digit.web.models;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class IdResponse {
private String id;
}
- In the BirthApplicationEnrichment class, update the enrichBirthApplication method as shown below:
public void enrichBirthApplication(BirthRegistrationRequest birthRegistrationRequest) {
//Retrieve list of IDs from IDGen service
List<String> birthRegistrationIdList = idgenUtil.getIdList(birthRegistrationRequest.getRequestInfo(), birthRegistrationRequest.getBirthRegistrationApplications().get(0).getTenantId(), "btr.registrationid", "", birthRegistrationRequest.getBirthRegistrationApplications().size());
Integer index = 0;
for(BirthRegistrationApplication application : birthRegistrationRequest.getBirthRegistrationApplications()) {
// Enrich audit details
AuditDetails auditDetails = AuditDetails.builder().createdBy(birthRegistrationRequest.getRequestInfo().getUserInfo().getUuid()).createdTime(System.currentTimeMillis()).lastModifiedBy(birthRegistrationRequest.getRequestInfo().getUserInfo().getUuid()).lastModifiedTime(System.currentTimeMillis()).build();
application.setAuditDetails(auditDetails);
// Enrich UUID
application.setId(UUID.randomUUID().toString());
// Set application number from IdGen
application.setApplicationNumber(birthRegistrationIdList.get(index++));
// Enrich registration Id
application.getAddress().setRegistrationId(application.getId());
// Enrich address UUID
application.getAddress().setId(UUID.randomUUID().toString());
}
}
- Make sure below ID generation host configuration is present in the application.properties file. Make sure to fill in the correct values for the host.
{% code lineNumbers="true" %}
#Idgen Config
egov.idgen.host=http://localhost:8285/ #REPLACE
egov.idgen.path=egov-idgen/id/_generate
{% endcode %}