Skip to content

Activiti V6 notes

Joram Barrez edited this page May 19, 2016 · 14 revisions

6.0

  • Performance measurements vs v5
  • Review if async executor changes have been added to v5 embedded engine in v6
  • Split (but first measure, of course) ACT_RU_JOB into table for timer and aync jobs
    • Has been reported to do table scans on huge data sets
  • Timer calculation with repeat is bit hard now. Switch to storing the previous executed date and calculate from there.
  • Make storing of start/end time on historic elements consistent. Best with a unit test that verifies timings by moving the clock significantly and checking the start-end times accordingly.
  • Store more information in the runtime tables
    • initiator on process instance, start times, etc.
    • task: claim time
    • On upgrade .. this does mean copying existing data to the runtime?
  • Add a new method that allows custom delegate logic to be executed after commit/command context close (eg sending an email, sending out a message ... only when commit has been successul). Attribute on servicetask/mail/execution listener/task listener... Important here is documentation with a custom receive behavior + messaging ...
  • Review and fix DbSqlSession.optimizeDeleteOperations().
    • Measure performance impact for postgres for example (for executions only). Doesn't work for mysql.
    • Add layered delete if bulk delete doesn't seem to work.
  • Remove the old job executor + document migration changes.
  • Move behaviour from Model. Add a cache to store the behaviours. Behaviours should be instantiated once. Do the same for Execution Listeners. All should be instantiated once.
    • Problem: what about seq flow without ids? --> add a unique id during parsing to store in the cache.
  • Move to 4 spaces
    • We did it, but then went back due to merge conflicts between v5 commits and v6
    • Let's do it just before the final release
  • Check deleteReason usage ánd provide interface with potential values
  • Disable event firing by default. Enabled it when a listener gets registered
  • Event listener if-enabled check needs to be applied everywhere
  • More upgrade/compatibility tests

Post 6.0

  • Store assignee audit history
  • Differentiate between task delete time and task completion time (similar for other concepts like process instance too)
  • Transient variables
  • Async history
    • Instead of x rows, store one row with all info that gets processed later
    • Easily portable to other async processing mechanisms (JMS, Redis, Hazelcast, etc)
  • Async event logging (if async history is proven to be better performing)
    • Similar to async history
  • Multi instance variable mapper (might be a v5 thing too?)
  • Dynamic tasks: add any task to the process instance on the root level
  • Simplify job acquire queries by moving suspension state to job
  • Add convenience methods to easily add an execution listener/task listener during parsing (now: hassle with ActivitiListener)
  • Firing of execution listeners code is duplicated, should be consolidated
  • Provide easier access to ExtensionElements (now it's quite low-level)

Documentation

  • Migration Guide
    • ActivityBehaviour package is changed
    • CommandContextCloseListener interface change
    • Context.getCommandContext.getTransactionContext -> now on Context
    • DelegateExpression: default is MIXED (compatibility in v5)
  • Doc migration: setAssignee/setOwner/resolve/delegate methods are gone in v6 for execution listener/script
    • They do not set correct history
  • Terminate Multi Instance (6 only feature)
  • New interfaces (entityManagers and such) need to be javadocced
  • Json variable needs to be documented
  • EngineServices are removed. Should use ProcessEngineConfiguration.getRuntimeService for example.
  • Rewrite user guide for v6.