簡體   English   中英

啟動共享流程定義時,Camunda 設置租戶 ID

[英]Camunda set tenant id when starting a shared process definition

當流程定義本身在多個租戶之間共享時,是否可以設置租戶 ID?

我調用此方法,從 http 請求中獲取兩個 id,然后將其傳遞給嵌入式流程引擎

public void startInstance(String processDefinitionId, String tenantId) {
        this.runtimeService.startProcessInstanceById(processDefinitionId);
    }

但是使用這種方法我無法將租戶 ID 傳遞給流程實例。 我如何實現這一目標?

我發現了這個閱讀: https ://docs.camunda.org/manual/7.5/user-guide/process-engine/multi-tenancy/#instantiate-a-shared-definition 但它並沒有真正解決我的問題,因為我得到來自 http-header 的租戶 ID。

感謝 Jan 的評論,我發現可以將租戶 ID 作為變量添加到啟動的實例中,並在TenantProvider中檢索它。

代碼看起來像這樣

runtimeService.createProcessInstanceById(processDefinitionId).setVariable("tenantId", tenantId).execute();

在您的 TenantProvider 上,只需像這樣獲取此變量

public class TenantProvider implements TenantIdProvider {

    @Override
    public String provideTenantIdForProcessInstance(TenantIdProviderProcessInstanceContext ctx) {
        return (String) ctx.getVariables().get("tenantId");
    }

    @Override
    public String provideTenantIdForCaseInstance(TenantIdProviderCaseInstanceContext ctx) {
        return (String) ctx.getVariables().get("tenantId");
    }

    @Override
    public String provideTenantIdForHistoricDecisionInstance(TenantIdProviderHistoricDecisionInstanceContext ctx) {
        return (String) ctx.getExecution().getVariable("tenantId");
    }
}

要啟用 TenantProvider,請像這樣啟動引擎

ProcessEngine engine = new StandaloneProcessEngineConfiguration()
                .setTenantIdProvider(new TenantProvider())
                ...
                .buildProcessEngine();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM