How to add a timeDuration to a timerEventDefinition

I try to implement a vue version of the property panel ( Atm I am working on the TimerEventDefinition. I am able to create this definition with:

const element = modeler.get("elementRegistry").get(validElementId);
const bpmnFactory = modeler.get("bpmnFactory");

const eventDefinition = bpmnFactory.create("bpmn:TimerEventDefinition");
element.businessObject.eventDefinitions = [eventDefinition];
eventDefinition.$parent = element.businessObject;

But I wonder how I am able to add <bpmn:timeDuration xsi:type="bpmn:tFormalExpression">definitionValue</bpmn:timeDuration> part to the eventDefintion properly.

I read the properties-panel code, but I dont find the “place” where timeDuration is added to the eventDefinition. There is only one place in TimerEventDefinition.js where timeDuration (newType) is added as property:

props[newType] = createFormalExpression(timerEventDefinition, value, bpmnFactory);
return cmdHelper.updateBusinessObject(element, timerEventDefinition, props);

But I don’t know if its the place where the needed magic happens, cause I think the timeDuration should be added like in the first eventDefinition code snipped above (create and set proper parent)

Also I wonder how I am able to add this xsi:type. Do I have to or is it added automatically by the moddle lib somehow?


1 Like

I was able to solve the issue. I just had to set the timeDefinition properly:

const timeDefinition = createFormalExpression(eventDefinition, 'test', bpmnFactory);
eventDefinition.set('timeDuration', timeDefinition);

I am new to the bpmn , I want to konw where is the createFormalExpression function

Please do not necrobump old topics. Instead link to this thread from new topic.