【Activiti Tips】プロセス図を出力する
概要
今回の記事では、Activiti Designerで作成したbpmnファイルを元にサーバサイドでプロセス図の画像ファイルを出力する方法をご紹介します。
プロセス図(プロセス定義)
RepositoryService.getProcessDiagram(String processDefinitionId)を利用することで、プロセス定義の静的なプロセス図を出力することが可能です。 プロセス図はInputStreamで返ってくるので、適宜ファイルへ出力してください。 https://www.activiti.org/javadocs/org/activiti/engine/RepositoryService.html#getProcessDiagram-java.lang.String-
プロセス図(プロセスインスタンス)
稼働中のプロセスのプロセス図を出力するには、インターフェース ProcessDiagramGeneratorを利用します。 実装は、ProcessEngineConfiguration().getProcessDiagramGenerator()で取得できます。
プロセス定義と違って、プロセスインスタンスの場合はアクティビティを指定してプロセス図を出力します。 プロセス図はInputStreamで返ってくるので、適宜ファイルへ出力してください。
// プロセス定義のBPMNモデルを取得 BpmnModel bpmnModel = repositoryService.getBpmnModel(processDef.getId()); // プロセス図を出力 ProcessDiagramGenerator diagramGenerator = processEngine.getProcessEngineConfiguration().getProcessDiagramGenerator(); InputStream processInstanceDiagramStream = diagramGenerator.generateDiagram(bpmnModel, "png", runtimeService.getActiveActivityIds(processInstance.getId()));
サンプルプログラム
プロセス定義, プロセスインスタンスそれぞれのプロセス図を出力するサンプルプログラムを以下のリポジトリで公開しています。
https://github.com/daisuke-yoshimoto/generateDiagram
上記のリポジトリのサンプルコードはシンプルさを重視しています。 実際の開発・運用において必ずしも適切な実装ではありません。参考にされる場合は、十分ご注意ください。