4

プロセスインスタンスから変数マップを取得する方法はありますか、または実行を使用する必要があります.1つのプロセスインスタンスには複数の実行がある可能性があるため、実行を使用してもプロセスインスタンスの変数マップを取得するのに常に役立つわけではありません

4

2 に答える 2

4

私は同様の問題に直面しました。変数マップを取得するには実行が必要です。あなたが言ったように、特定のプロセスインスタンスに対して複数の実行が存在する可能性があります。したがって、変数が存在するルート実行を見つける必要があります。ルート実行を見つけるためのコードをいくつか書きました。複数のネストされた呼び出しアクティビティを持つプロセスに対してテストしました。サブプロセスに対して試したことはありませんが、うまくいくと思います:

ExecutionEntity executionEntity = (ExecutionEntity) runtimeService.createExecutionQuery().executionId(executionId).singleResult();
if (executionEntity == null) {
    return null;
}
String parentId = executionEntity.getParentId();
boolean parentNotEmpty = StringUtils.isNotEmpty(parentId);
String superExecutionId = executionEntity.getSuperExecutionId();
boolean superNotEmpty = StringUtils.isNotEmpty(superExecutionId);
if (parentNotEmpty) {
    return getRootExecution(parentId);
} else if (superNotEmpty) {
    return getRootExecution(superExecutionId);
} else {
    return executionEntity;
}

このスニペットは、プロセス インスタンスに属する任意の実行 ID を取得します。任意の ID を指定できます。ルート実行を返します。次に、このコードを使用して変数を取得できます。

Object variable = getRuntimeService().getVariable(rootExecutionId, variableName);
于 2013-07-04T14:07:54.193 に答える
2

を見てくださいorg.activiti.engine.RuntimeService.getVariable*(*)。すべてのプロセス インスタンス変数にアクセスできます。もちろん、プロセス インスタンスを識別するために実行 ID が必要です。これが探しているものでない場合は、質問を絞り込んでください。

于 2013-06-21T12:11:17.637 に答える