jBPM Suite関連Tips
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
] [
Twitter
]
開始行:
→ビジネスプロセス管理
→jBPM関連Tips(タスク編)
#contents
※以下のTipsは jBPM Ver.6.0.1(コミュニティ版)で調査した...
*永続化 [#m8bc53fc]
-[[BPMS 6 を設定して、外部データベースを使用する方法>http...
*ユーザ関連 [#l44c7b8c]
**あるユーザの所属するグループを取得して表示 [#y6ec0d71]
private void dispUserGroup(String user) {
String callBackProp = System.getProperty("jbpm.usergrou...
System.out.println("callbackProperty=" + callBackProp);
UserGroupCallback ugrpCallback = new JBossUserGroupCall...
List<String> grps = ugrpCallback.getGroupsForUser(user,...
for(String grp : grps) {
System.out.println(grp);
}
/* こういうやり方もある
RuntimeEnvironment env = RuntimeEnvironmentBuilder.Fact...
.addAsset(ResourceFactory.newClassPathResource("s...
UserGroupCallback ugc = env.getUserGroupCallback();
grps = ugrpCallback.getGroupsForUser(user, null, null);
for(String grp : grps) {
System.out.println(grp);
}
*/
}
**EclipseでjBPMのテストクラスを動かすときのユーザ情報はど...
-もともと用意されているjohnとかmaryとかkrisvとかのユーザ...
-ドキュメントには users.properties を修正するとか adduser...
-Eclipseでテスト実行するときのユーザ情報は、JBPMS を C:\j...
-このjarの中にある usergroups.properties の代わりに自前の...
-具体的には、Eclipseでビルド・パスの設定で確認すればよい...
-この情報はドキュメントのどこにも書いていないように見える...
-なお roles.properties の読み込みは以下のクラスで行っている
jbpm-human-task-core 内の
org.jbpm.services.task.identity.JBossUserGroupCallbackImpl
*プロセス関連 [#tb6dc3c4]
**プロセス内のノードの一覧を取得 [#pcf3370f]
@SuppressWarnings("restriction")
private void dispProcNodes(ProcessInstance processInsta...
System.out.println("---");
WorkflowProcessInstanceImpl instance = (WorkflowProce...
for (Node node : instance.getNodeContainer().getNodes...
//NodeContainer nc = node.getNodeContainer();
//Node[] nods = nc.getNodes();
System.out.println(">>id=[" + node.getId() + "], ...
Map<String,Object> map =node.getMetaData();
for (String key : map.keySet()) {
System.out.println(key + " = " + map.get(key));
}
}
System.out.println("---");
}
**プロセスインスタンスのステータス [#n0900a1e]
private void dispProcState(ProcessInstance processInstan...
int st =processInstance.getState();
switch(st){
case ProcessInstance.STATE_ACTIVE:
System.out.println("st=STATE_ACTIVE");
break;
case ProcessInstance.STATE_COMPLETED:
System.out.println("st=STATE_COMPLETED");
break;
case ProcessInstance.STATE_ABORTED:
System.out.println("st=STATE_ABORTED");
break;
default:
System.out.println("st=" + st);
break;
}
}
**プロセス変数設定 [#bcf582b7]
-【制約】プロセス変数に独自クラスを使う場合、Serializable...
WorkflowProcessInstanceImpl wfpi = (WorkflowProcessInsta...
wfpi.setVariable(varName, "xxx");
-また、テストクラスの第二引数をfalseにしておかないと proc...
(WorkflowProcessInstance#reconnectというメソッドがあるの...
-永続化をありにしているときは、トランザクション内でないと...
TransactionManager tm = TransactionManagerServices.getTr...
tm.begin();
WorkflowProcessInstance wfpi = (WorkflowProcessInstance)
ksession.getProcessInstance(processinstance.getId());
wfpi.setVariable("user", "abc");
System.out.println("after set: " + wfpi.getVariable("use...
tm.commit();
--[[ソース:How to set process variable ?>https://access....
--TransactionManagerServicesは[[bitronix>http://docs.code...
--Ver.6では、EnvironmentクラスからTransactionManagerを取...
--ただし、プロセス変数の変更は completeメソッドでタスク変...
-JbpmJUnitBaseTestCaseで直接プロセス変数取得
String val = (String) getVariableValue(varName, processI...
System.out.println("val=" + val);
**プロセス変数の列挙(通常のやり方) [#gf4d7e2b]
Map<String,Object> vmap = wfpi.getVariables();
for(String s : vmap.keySet()){
System.out.println( s + "=" + vmap.get(s) );
}
**VariableScopeを使ってプロセス変数の一覧を取得する [#g0a...
ContextableInstance ci = (ContextableInstance) processIn...
VariableScopeInstance vsi = (VariableScopeInstance)ci.g...
VariableScope vs = vsi.getVariableScope();
List<Variable> vars = vs.getVariables();
for(int i = 0 ; i < vars.size(); i++ ){
System.out.println(vars.get(i).getName() + "=" + vars....
}
** Context<?>の取得 [#o4d29acb]
-PerProcessInstance のストラテジで RuntimeManager を作っ...
-このContext<?>の取得方法
RuntimeManager manager = createRuntimeManager(
Strategy.PROCESS_INSTANCE, "sample.bpmn","subpro.bpmn");
RuntimeEngine engine = manager.getRuntimeEngine(ProcessI...
-そもそもこのContext<?>というのは何?かというと、どうもPe...
--上記でいうと、ProcessInstanceIdContext が Context<?> の...
*セッション関連 [#a507df2a]
**デフォルト KieSession と 名前つき KieSession についての...
-http://blog.athico.com/2013/10/configuration-and-convent...
**KieSessionの実装 [#xf2579de]
-org.drools.core.command.impl.CommandBasedStatefulKnowled...
-implementsの階層は
CommandBasedStatefulKnowledgeSession
> StatefulKnowledgeSession
> KieSession, KnowledgeRuntime, KnowledgeRuntimeEven...
-drools-coreの org.drools.core.common.AbstractWorkingMemo...
-implementsをたぐると
StatefulSession
>WorkingMemory
>WorkingMemoryEntryPoint
なので違う
*Eclipseによる開発 [#k053e34a]
-ビジネスルールタスクにタスク変数の設定ができない?
--BPMNのPreferenceで ioSpecification、dataInputAssociatio...
-Eclipse PluginのProcess Instancesビューの使い方
--EclipseがAdvancedで自動生成した ProcessTestクラスのコン...
--Process Instanceビューは Process InstancesビューからPro...
-インストール後のEclipse起動
--普通にEclipseを起動するとjBPMのruntimeのjarがビルド・パ...
--antで起動した場合、 eclipse.preferences.ini の下記の記...
org.jbpm.eclipse/jBPM.Runtimes=jBPM runtime#./runtime#tr...
終了行:
→ビジネスプロセス管理
→jBPM関連Tips(タスク編)
#contents
※以下のTipsは jBPM Ver.6.0.1(コミュニティ版)で調査した...
*永続化 [#m8bc53fc]
-[[BPMS 6 を設定して、外部データベースを使用する方法>http...
*ユーザ関連 [#l44c7b8c]
**あるユーザの所属するグループを取得して表示 [#y6ec0d71]
private void dispUserGroup(String user) {
String callBackProp = System.getProperty("jbpm.usergrou...
System.out.println("callbackProperty=" + callBackProp);
UserGroupCallback ugrpCallback = new JBossUserGroupCall...
List<String> grps = ugrpCallback.getGroupsForUser(user,...
for(String grp : grps) {
System.out.println(grp);
}
/* こういうやり方もある
RuntimeEnvironment env = RuntimeEnvironmentBuilder.Fact...
.addAsset(ResourceFactory.newClassPathResource("s...
UserGroupCallback ugc = env.getUserGroupCallback();
grps = ugrpCallback.getGroupsForUser(user, null, null);
for(String grp : grps) {
System.out.println(grp);
}
*/
}
**EclipseでjBPMのテストクラスを動かすときのユーザ情報はど...
-もともと用意されているjohnとかmaryとかkrisvとかのユーザ...
-ドキュメントには users.properties を修正するとか adduser...
-Eclipseでテスト実行するときのユーザ情報は、JBPMS を C:\j...
-このjarの中にある usergroups.properties の代わりに自前の...
-具体的には、Eclipseでビルド・パスの設定で確認すればよい...
-この情報はドキュメントのどこにも書いていないように見える...
-なお roles.properties の読み込みは以下のクラスで行っている
jbpm-human-task-core 内の
org.jbpm.services.task.identity.JBossUserGroupCallbackImpl
*プロセス関連 [#tb6dc3c4]
**プロセス内のノードの一覧を取得 [#pcf3370f]
@SuppressWarnings("restriction")
private void dispProcNodes(ProcessInstance processInsta...
System.out.println("---");
WorkflowProcessInstanceImpl instance = (WorkflowProce...
for (Node node : instance.getNodeContainer().getNodes...
//NodeContainer nc = node.getNodeContainer();
//Node[] nods = nc.getNodes();
System.out.println(">>id=[" + node.getId() + "], ...
Map<String,Object> map =node.getMetaData();
for (String key : map.keySet()) {
System.out.println(key + " = " + map.get(key));
}
}
System.out.println("---");
}
**プロセスインスタンスのステータス [#n0900a1e]
private void dispProcState(ProcessInstance processInstan...
int st =processInstance.getState();
switch(st){
case ProcessInstance.STATE_ACTIVE:
System.out.println("st=STATE_ACTIVE");
break;
case ProcessInstance.STATE_COMPLETED:
System.out.println("st=STATE_COMPLETED");
break;
case ProcessInstance.STATE_ABORTED:
System.out.println("st=STATE_ABORTED");
break;
default:
System.out.println("st=" + st);
break;
}
}
**プロセス変数設定 [#bcf582b7]
-【制約】プロセス変数に独自クラスを使う場合、Serializable...
WorkflowProcessInstanceImpl wfpi = (WorkflowProcessInsta...
wfpi.setVariable(varName, "xxx");
-また、テストクラスの第二引数をfalseにしておかないと proc...
(WorkflowProcessInstance#reconnectというメソッドがあるの...
-永続化をありにしているときは、トランザクション内でないと...
TransactionManager tm = TransactionManagerServices.getTr...
tm.begin();
WorkflowProcessInstance wfpi = (WorkflowProcessInstance)
ksession.getProcessInstance(processinstance.getId());
wfpi.setVariable("user", "abc");
System.out.println("after set: " + wfpi.getVariable("use...
tm.commit();
--[[ソース:How to set process variable ?>https://access....
--TransactionManagerServicesは[[bitronix>http://docs.code...
--Ver.6では、EnvironmentクラスからTransactionManagerを取...
--ただし、プロセス変数の変更は completeメソッドでタスク変...
-JbpmJUnitBaseTestCaseで直接プロセス変数取得
String val = (String) getVariableValue(varName, processI...
System.out.println("val=" + val);
**プロセス変数の列挙(通常のやり方) [#gf4d7e2b]
Map<String,Object> vmap = wfpi.getVariables();
for(String s : vmap.keySet()){
System.out.println( s + "=" + vmap.get(s) );
}
**VariableScopeを使ってプロセス変数の一覧を取得する [#g0a...
ContextableInstance ci = (ContextableInstance) processIn...
VariableScopeInstance vsi = (VariableScopeInstance)ci.g...
VariableScope vs = vsi.getVariableScope();
List<Variable> vars = vs.getVariables();
for(int i = 0 ; i < vars.size(); i++ ){
System.out.println(vars.get(i).getName() + "=" + vars....
}
** Context<?>の取得 [#o4d29acb]
-PerProcessInstance のストラテジで RuntimeManager を作っ...
-このContext<?>の取得方法
RuntimeManager manager = createRuntimeManager(
Strategy.PROCESS_INSTANCE, "sample.bpmn","subpro.bpmn");
RuntimeEngine engine = manager.getRuntimeEngine(ProcessI...
-そもそもこのContext<?>というのは何?かというと、どうもPe...
--上記でいうと、ProcessInstanceIdContext が Context<?> の...
*セッション関連 [#a507df2a]
**デフォルト KieSession と 名前つき KieSession についての...
-http://blog.athico.com/2013/10/configuration-and-convent...
**KieSessionの実装 [#xf2579de]
-org.drools.core.command.impl.CommandBasedStatefulKnowled...
-implementsの階層は
CommandBasedStatefulKnowledgeSession
> StatefulKnowledgeSession
> KieSession, KnowledgeRuntime, KnowledgeRuntimeEven...
-drools-coreの org.drools.core.common.AbstractWorkingMemo...
-implementsをたぐると
StatefulSession
>WorkingMemory
>WorkingMemoryEntryPoint
なので違う
*Eclipseによる開発 [#k053e34a]
-ビジネスルールタスクにタスク変数の設定ができない?
--BPMNのPreferenceで ioSpecification、dataInputAssociatio...
-Eclipse PluginのProcess Instancesビューの使い方
--EclipseがAdvancedで自動生成した ProcessTestクラスのコン...
--Process Instanceビューは Process InstancesビューからPro...
-インストール後のEclipse起動
--普通にEclipseを起動するとjBPMのruntimeのjarがビルド・パ...
--antで起動した場合、 eclipse.preferences.ini の下記の記...
org.jbpm.eclipse/jBPM.Runtimes=jBPM runtime#./runtime#tr...
ページ名: