@startuml autoactivate on participant "Workload\nModel" as workload participant "Driver\nAdapter" as adapter #ff0 participant "Op\nType" as optype #ff0 participant "Standard\nActivity" as activity #0fa participant "Op\nSource" as opsource #0fa participant "Standard\nAction" as action #0fa participant "Native\nDriver" as native #ff00ff participant "Target\nSystem" as target #ff00ff === during initialization === activity -> adapter: getOpMapperFunc() return activity -> workload: getWorkloadTemplate() return note over activity The activity composes an OpSource function from the template data and the op mapping logic end note activity -> opsource ** : compose function\n> activity -> action ** : create worker\nwith > === during cycling === action -> opsource: getOp() opsource -> optype ** : create return return action -> action: run(op) native -> target: execute operation return return result 'activity -> workload: getOpTemplate 'activity <- workload: 'activity -> workload: getOp 'workload -> activity ' 'activity -> adapter ' 'activity -> adapter: getOpSource 'activate adapter 'activity <- adapter: 'deactivate adapter ' 'activity -> opsource: getOp ' @end