Workflow Composer
`@lssm/lib.workflow-composer` injects tenant-/role-/device-specific steps into base WorkflowSpecs and keeps transitions valid.
Register extensions
const composer = new WorkflowComposer();
composer.register({
workflow: 'billing.invoiceApproval',
tenantId: 'acme',
customSteps: [
{
after: 'validate-invoice',
inject: {
id: 'acme-legal',
type: 'human',
label: 'ACME Legal Review',
},
transitionTo: 'final-approval',
},
],
hiddenSteps: ['internal-audit'],
});Compose at runtime
const tenantWorkflow = composer.compose({
base: BaseInvoiceWorkflow,
tenantId: 'acme',
});
workflowRunner.execute(tenantWorkflow, ctx);