jBPMフロー定義の削除について
お客様が一つの要求を提出した後、フローがあるノードに移行した後、フロー定義を修正する必要があることが分かりました.おそらく処理者を修正したり、ノード名/説明を修正したり、ある属性(カスタム)を修正したりしますが、流れの構造を変更することはできません.流れの定義を直接修正して、このバージョンの下のフローインスタンスを有効にしますか?テストケースを作成する時、いくつかの面白い問題を発見しました.
1中間バージョンの流れの定義を削除できますか?中間バージョンの流れの定義を追加できますか?
2フロー定義を削除できますか?
3 udateフローの定義ができますか?
nowが問題を持っています.let's go!
一般的に削除フロー定義コードは以下の通りです.
これでは「更新」の流れが定義できなくなりますか?いいえ、もしあなたの修正がjBPMのノードに関係しないなら、接続と変数などのキーデータ(これらのデータは全部解析してデータベースに保存されていますので)を接続してください.もしあなたの修正がいくつかの「非キー」の属性だけに関連しているならば、添付ファイルのprocessdefinitions.xml添付ファイルを読み込んで修正してもできます.(添付ファイルの取得は私のもう一つの文章を参照してもいいです.
http://shappy1978.iteye.com/blog/422054)、もしあなたの修正が前に述べた前提を守らないなら、流れが流れた後に予想できない結果をもたらすかもしれません.
1中間バージョンの流れの定義を削除できますか?中間バージョンの流れの定義を追加できますか?
2フロー定義を削除できますか?
3 udateフローの定義ができますか?
nowが問題を持っています.let's go!
一般的に削除フロー定義コードは以下の通りです.
try {
ProcessDefinition pd = getDefinition(procName, version,jbpm);
if(pd!=null){// throw new Exception("Process not found!");
GraphSession graphSession = jbpm.getGraphSession();
graphSession.deleteProcessDefinition(pd.getId());
}
}finally{
closeContext();
}
このコードは中間バージョンの流れの定義を削除し、削除したら中間バージョンの流れの定義を追加することができます.しかし、GraphSessionの削除コードを見ると、削除フローの定義の前に自動的にこの定義に属するすべての流れのインスタンスが削除されることが分かります. public void deleteProcessDefinition(ProcessDefinition processDefinition) {
if (processDefinition==null) throw new JbpmException("processDefinition is null in JbpmSession.deleteProcessDefinition()");
try {
// delete all the process instances of this definition
List processInstances = findProcessInstances(processDefinition.getId());
if (processInstances!=null) {
Iterator iter = processInstances.iterator();
while (iter.hasNext()) {
deleteProcessInstance((ProcessInstance) iter.next());
}
}
// then delete the process definition
session.delete(processDefinition);
} catch (Exception e) {
log.error(e);
jbpmSession.handleException();
throw new JbpmException("couldn't delete process definition '" + processDefinition.getId() + "'", e);
}
}
jBPMのフローチャートで定義されている関連フロー定義テーブルの外部キーのため、自分でプログラム削除フローの定義ができず、フロー例を削除しないとエラーが発生します.同じように、フロー定義テーブルとノードテーブルにも外部キーが関連しています.これでは「更新」の流れが定義できなくなりますか?いいえ、もしあなたの修正がjBPMのノードに関係しないなら、接続と変数などのキーデータ(これらのデータは全部解析してデータベースに保存されていますので)を接続してください.もしあなたの修正がいくつかの「非キー」の属性だけに関連しているならば、添付ファイルのprocessdefinitions.xml添付ファイルを読み込んで修正してもできます.(添付ファイルの取得は私のもう一つの文章を参照してもいいです.
http://shappy1978.iteye.com/blog/422054)、もしあなたの修正が前に述べた前提を守らないなら、流れが流れた後に予想できない結果をもたらすかもしれません.