public String getCaseInstance(String containerId, String caseId, boolean withData, boolean withRoles, boolean withMilestones, boolean withStages, String marshallingType) {
verifyContainerId(containerId, caseId);
CaseInstance actualCaseInstance = caseService.getCaseInstance(caseId, withData, withRoles, withMilestones, withStages);
org.kie.server.api.model.cases.CaseInstance caseInstance = ConvertUtils.transformCaseInstance(actualCaseInstance);
if (actualCaseInstance.getStatus().equals(ProcessInstance.STATE_ACTIVE)) {
if (withData) {
caseInstance.setCaseFile(CaseFile.builder().data(actualCaseInstance.getCaseFile().getData()).build());
}
if (withMilestones) {
caseInstance.setMilestones(ConvertUtils.transformMilestones(actualCaseInstance.getCaseMilestones()));
}
if (withStages) {
caseInstance.setStages(ConvertUtils.transformStages(actualCaseInstance.getCaseStages()));
}
if (withRoles) {
caseInstance.setRoleAssignments(ConvertUtils.transformRoleAssignment(actualCaseInstance.getCaseRoles()));
}
}
logger.debug("About to marshal case instance with id '{}' {}", caseId, caseInstance);
return marshallerHelper.marshal(containerId, marshallingType, caseInstance, new ByCaseIdContainerLocator(caseId));
}