Parallel and Asynchronous Provisioning

Last modified 05 Mar 2021 18:03 +01:00

Parallel Provisioning

Main ideas:

  1. Parallel provisioning is implemented using task and its subtasks. Each subtask for one thread of provisioning.

  2. ModelContext is stored in the parent task only. Subtasks can only read this context. (Note: if using heavyweight, quartz-scheduled tasks, how will this context be accessed?)

  3. After finishing a subtask, the parent will read its result.

  4. In the future, there will be lightweight subtasks - not in repo, executing in threads not managed by quartz.

Asynchronous Provisioning

Main ideas:

  1. New kind of task handler - "AsyncProvisioningHandler" - will be created.

  2. It will be used to

    1. wait for finishing operation in external system,

    2. and then returning control to provisioning module (the module then finishes the operation, so that model can get the result - TODO how to design this?)

Notification mails:

  1. "account creation is in progress"

  2. "operation is in progress" - i.e. if something changes, join-handler sends notification (or, there will be notifications done via nightly-run reporting task)

Communication with external systems:

  1. original idea: via specific driver,

  2. but perhaps we will do that through activiti

Parallel provisioning should be ready in 2.2 (asynchronous provisioning later).