All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
To fix issue #231
- engine.invoke noWait option changed behaviour: Old Behaviour: engine.invoke complete the target node and continue execution till a wait state of end of process New Behaviour: with 'noWait' option now it will complete the target node and return before continue with the rest of the process till wait state Example:
let res = await api.engine.start('test-wait-invoke', {},user);
console.log('about to invoke with noWait option')
res=await api.engine.invoke({ "id": res.instance.id, "items.elementId": 'Activity_0z113lq'},{},user,{noWait:true}),
console.log(`invoked`,res.item.element.type,res.item.status);
report(res.instance);
- All JavaScript triggers are now async
- ScriptHandler can be assigned to a different class at configuration.ts
- This release require changes configuration.ts to add scriptHandler, add the following to new Configuration call
scriptHandler: function(server) {
return new ScriptHandler();
},
Fix bug #227 - Erorr Handler from direct boundary event
Fix bug #222
- Added item.statusDetails to contail bpmnError code
- item.output is now saved to the db
Minor changes
data.findItems: Added $in condition Fixed Bug with query in items.vars.
rollback last commit
fixed bug, instance.data is now impacted by change on item.input during validate
added api.engine.upgrade() ade(model:string,afterNodeIds:string[]):Promise<string[]|{errors}>;
added the following to process:
candidateStarterGroups
candidateStarterUsers
historyTimeToLive
isStartableInTasklist
- Fixed bug with callTask
- JavaScript events errors now throw exceptions
- Logger.log is now optional: {includeLog: true}
- DataStore.findInstances now accepts sort as an option
* @param option
* -'summary' minimal data
* - 'full'
* - {projection,sort}
async findInstances(query, option: 'summary' | 'full' | any = 'summary'): Promise<IInstanceData[]>{
- Added execution option: 'parentItemId' for callService
if (options['parentItemId']) {
execution.instance.parentItemId=options['parentItemId'];
}
- Fix issue with async scripts for 'Task Assignment' by adding return
else if (exp.startsWith('#')) {
val = await ScriptHandler.executeScript(item, 'return '+exp.substring(1));
}
- Loops/SubProcess/Transactions directly after gateways caused error of a token without any items, since loops create own tokens, fix: borrow item for subprocess
- Added eventsDetails to event to include more details
- some improved logging , log level
- findInstnaces options accepts projection
- almost total rewrite of the Cancel/End processing for nodes, loops
- More test cases focusing in Loops, Transactions
Fix Issue #194 , loops inside loops
- Now support escalation and error code in defining the catchEvent
- Added return { bpmnError:'code'}
- Added return { escalation:'code'}
- Added process.exception event
- Added data sanitanizer
- Fixed bug with gateway, added test scenario
- Fixed bug with loop and subprocess, loop and subprocess have own item now
- Moved docs to mkDocs host at github.io
- .env.ENABLE_PROFILER will display MONGODB timing on console
- server.dataStore.archive(query)
- Add support to ad-hoc subprocesses
- Removed reference to UserService from back-end, kept in front-end only
- Fixed bug with subprocess not ending correctly
- Change itemKey to contain entire dataPath
- Change Data Structure for loop from Array to Object
- Fixed bug with loop info not loaded on restore
- Add:
get(query:any ,user: ISecureUser): Promise<object[]>
returns full model data, including documentation - Change:
getList(..)
returns only names
- Add:
restart(itemQuery, data:any,user:ISecureUser, options?:IEngineOptions) :Promise<IExecution>
restarting an already completed instance at a particular node
- Moved webApp as a separate Repo
- Changed install procedure
- Compile src into dist , repos only include src (TS)
- Re-Write docs
- Added Docusaruas
- Configuration.ts: - Added UserService
- AppServices.ts is the location for all services
- Logger: added
info
to summarize actions - Support TaskListener
- Input/Output Variables now supports multiple types
- Timer: now supports timeDate type and repeat
- Process: supports script events
- ServiceName can now include child objects
- UserService: added
validate
Event
- New API
- Added User Authentication for WebApp
- Added User Management; Signup and Admin
- Added Assign function, users can Assign other users to the task
- Improved Users Interface to support above changes
- Added Instance Locking, supporting multiple nodeJS servers running against same MongoDB
- Support lanes as role see userAssignment
- Improve documentation
- Removes ACL/IAM and relies on the front-end to provide user authentication
- Uses UserTask assignment fields to capture assignment information -- Add assignment fields to Item class -- see userAssignment for details
-Fixed Issue with DataObject interface -Added item.vars to storage
-Fixed Issue Exclusive Gateway Convergence #87
- Fixed Issue # 84 #84
- Fixed Issue with Input Parameters #85
- Fixed Request to update dependencies #79
- Added to .env definitions_path
- Timer now supports Repeat format R3PT15M
- Fixed bug with gateway converge
- Added the following to API
- definitions/import
- definitions/delete
- definitions/rename
- SendTask is working same as Service Task - Issue #58
- Support Repeat Timers using format R3/PT3S
- Improved support for Error Event need to support errorId
- Added Escalation Event Type
- Added Transaction support
- Cancel Transaction
- Compensate Transaction
- Added Color scheme for Activity Status
- SendTask now behaves same as ServiceTask
- BoundaryEvents
- Handle interrupting and non-interrupting
- Interrupting cancel the parent task and its flow
- Fix errors in throwSignal/throwMessage in bpmn-client
- Fix errors in throwSignal/throwMessage in api #52
- Fix bug showing instance 'end' while still running when in gateway
- Fix issue with editing element name in property panel #54
- Include tmp folder in install #56
- Minor changes to UI - preserve the last process
Fix bugs with Throwing Messages and Signals
Issue #41 Fixed - configuring service task in BPMN-Properties-Panel
No need to edit the bpmn file.
Issue #42 Fixed - running engines after processes end
Now engines are removed as they complete
Issue #43 Fixed - Discrepancy with findItems
Now FindItems returns all the items within the instance that meet the condition
Fixed import process error due to old version of connect-busboy
Fixed compile error with updated tsc
This is a major release, requires an upgrade and changes to existing code base.
Provides a UI to edit bpmn definition, therefore, no longer a need to edit the bpmn file
In order to provide this, changes to bpmn specification to be more compliant as follows:
- the only events are: start,end
- old format:
<bpmn:startEvent id="StartEvent_1ohx91b">
<bpmn:extensionElements>
<camunda:script event="start"><![CDATA[
console.log("This is the start event");
this.applyInput({records:[1,2,3]});
console.log(this.data);
console.log("This is the start event");]]></camunda:script>
</bpmn:extensionElements>
<bpmn:outgoing>Flow_18xinq3</bpmn:outgoing>
</bpmn:startEvent>
- New format:
<bpmn2:extensionElements>
<camunda:executionListener event="start">
<camunda:script scriptFormat="JavaScript">
script1
</camunda:script>
</camunda:executionListener>
<camunda:executionListener event="end">
<camunda:script scriptFormat="JavaScript">
script2
</camunda:script>
</camunda:executionListener>
</bpmn2:extensionElements>
Handling Input and Output has changed please this for details
- Old Format:
<bpmn:conditionExpression xsi:type="bpmn:tExpression">
<![CDATA[(this.needsCleaning=="Yes")]]>
</bpmn:conditionExpression>
- New Format:
<bpmn:conditionExpression xsi:type="bpmn:tFormalExpression" language="JavaScript">
(item.data.needsCleaning=="Yes")
</bpmn:conditionExpression>
Added API engine/status
- Access Control Rules
- Client API can specify the userId
- Improved documentation
Added WebAPI calls Added Remote access through bpmn-client package improved documentation
- docs\examples.md add lot more examples
- engine.start(...,options)
- AppDelegate now has serviceProvider class as a separate object
- signature to service calls
- old format: service(item);
- new format: return=service(input,executionContext);
- server.cron.checktimers();