@5minds/processcube_engine
Version:
The ProcessCube Engine. Stores and executes BPMNs.
74 lines • 3.4 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createProcessInstanceFromModel = createProcessInstanceFromModel;
const processcube_engine_sdk_1 = require("@5minds/processcube_engine_sdk");
const Compression_1 = require("./Compression");
const FlowNodeInstanceFactory_1 = require("./FlowNodeInstanceFactory");
async function createProcessInstanceFromModel(dataModel) {
let startToken;
let endToken;
if (dataModel.startToken) {
startToken = (0, processcube_engine_sdk_1.deserializeJson)(dataModel.startToken);
}
else if (dataModel.startTokenCompressed) {
startToken = await (0, Compression_1.decompressToken)(dataModel.startTokenCompressed);
}
if (dataModel.endToken) {
endToken = (0, processcube_engine_sdk_1.deserializeJson)(dataModel.endToken);
}
else if (dataModel.endTokenCompressed) {
endToken = await (0, Compression_1.decompressToken)(dataModel.endTokenCompressed);
}
const processInstance = {
correlationId: dataModel.correlationId,
processInstanceId: dataModel.processInstanceId,
processDefinitionId: dataModel.processDefinitionId,
processModelId: dataModel.processModelId,
processModelName: dataModel.processModelName,
processModelVersion: dataModel.processModelVersion,
embeddedProcessModelId: dataModel.embeddedProcessModelId,
hash: dataModel.processModelHash,
parentProcessInstanceId: dataModel.parentProcessInstanceId,
xml: dataModel.processDefinition?.xml,
ownerId: dataModel.ownerId,
ownerToken: dataModel.ownerToken,
startedByRootAccessToken: dataModel.startedByRootAccessToken,
createdAt: dataModel.createdAt,
state: dataModel.state,
finishedAt: dataModel.finishedAt,
restartedAt: dataModel.restartedAt,
durationInMilliseconds: dataModel.durationInMilliseconds ? parseInt(dataModel.durationInMilliseconds) : 0,
terminatedByUserId: dataModel.terminatedByUserId,
error: dataModel.error ? (0, processcube_engine_sdk_1.deserializeJson)(dataModel.error) : undefined,
startEventId: dataModel.startEventId,
startEventType: dataModel.startEventType,
startToken: startToken,
endEventId: dataModel.endEventId,
endEventType: dataModel.endEventType,
endToken: endToken,
correlation: {
correlationId: dataModel.correlation?.correlationId ?? dataModel.correlationId,
metadata: {},
},
metadata: {},
triggeredByFlowNodeInstance: await (0, FlowNodeInstanceFactory_1.createFlowNodeInstanceFromModel)(dataModel.triggeredByFlowNodeInstance),
};
dataModel.processInstanceMetadata
?.sort((first, second) => {
return first.createdAt > second.createdAt ? 1 : -1;
})
.forEach((metaData) => {
processInstance.metadata[metaData.key] = metaData.value;
});
if (dataModel.correlation?.correlationMetadata) {
dataModel.correlation.correlationMetadata
?.sort((first, second) => {
return first.createdAt > second.createdAt ? 1 : -1;
})
.forEach((metaData) => {
processInstance.correlation.metadata[metaData.key] = metaData.value;
});
}
return processInstance;
}
//# sourceMappingURL=ProcessInstanceFactory.js.map