jbpm 5学習資料
7101 ワード
http://blog.csdn.net/howareyoutodaysoft/article/details/8062743
jbpm 5応用錦集
1 jbpm 5知識庫をロードする
jbpm 5応用錦集
1 jbpm 5知識庫をロードする
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory
.newKnowledgeBuilder();
kbuilder.add(
ResourceFactory.newClassPathResource("HumanTestUser.bpmn"),
ResourceType.BPMN2);
KnowledgeBase kbase = kbuilder.newKnowledgeBase();
2 jbpm 5作成セッションStatefulKnowledgeSession sSession= kbase.newStatefulKnowledgeSession();
3 jbpm 5登録人工サービス HornetQHTWorkItemHandler sHumanTaskHandler = new HornetQHTWorkItemHandler(sSession);
sSession.getWorkItemManager().registerWorkItemHandler("Human Task",
sHumanTaskHandler);
SyncTaskServiceWrapper sTaskService = new SyncTaskServiceWrapper(new AsyncHornetQTaskClient(
"HumanTaskExample-testClient"));
sTaskService.connect("127.0.0.1", 5445);
4 jbpm 5起動フロー //
Map<String, Object> params = new HashMap<String, Object>();
params.put("user", username);
sSession.startProcess("defaultPackage.HumanTestUser", params);
5 jbpm 5ユーザ名から現在必要な人工タスクを取得する List<TaskSummary> taskes = sTaskService
.getTasksAssignedAsPotentialOwner(username, "en-UK");
for (TaskSummary task : taskes) {
//
task.getName();
// ID
task.getId();
}
6 jbpm 5人工タスクのパラメータを取得します。 // ID
Task task = sTaskService.getTask(taskInfo.getTaskID());
if (task != null)
{
// taskInfo ,taskInfo
taskInfo.setTaskName(task.getNames().get(0).getText());
// task
Object input = null;
long contentId = task.getTaskData().getDocumentContentId();
if (contentId != -1)
{
//
Content content = sTaskService.getContent(contentId);
input = ContentMarshallerHelper.unmarshall(task.getTaskData().getDocumentType(), content.getContent(),
sHumanTaskHandler.getMarshallerContext(), null);
// Map<String,Object>, HttpServletRequest
HttpServletRequest request = ServletActionContext.getRequest();
if (input instanceof Map<?, ?>)
{
Map<?, ?> map = (Map<?, ?>) input;
for (Object obj : map.keySet())
{
request.setAttribute(obj.toString(), map.get(obj).toString());
System.out.println("key: " + obj.toString() + " value: " + map.get(obj).toString());
}
}
}
}
7 jbpm 5から人工的な任務を完成します。 HttpServletRequest request = ServletActionContext.getRequest();
String username = (String) request.getSession().getAttribute("username");
if (taskInfo != null)
{
// taskID
Task task = sTaskService.getTask(taskInfo.getTaskID());
//
sTaskService.start(task.getId(), username);
//
Map<String, Object> results = new HashMap<String, Object>();
for (Object key : request.getParameterMap().keySet())
{
results.put(key.toString(), request.getParameter(key.toString()));
}
ContentData contentData = ContentMarshallerHelper.marshal(results,
sHumanTaskHandler.getMarshallerContext(), null);
//
sTaskService.complete(task.getId(), username, contentData);
}
8 jbpm 5フローチャートグラフィックスモニタ Collection<ProcessInstance> processes = sSession.getProcessInstances();
// ,
if (processes.size() == 0)
{
// request
HttpServletRequest request = ServletActionContext.getRequest();
request.setAttribute("x", "582");
request.setAttribute("y", "92");
request.setAttribute("width", "48");
request.setAttribute("height", "48");
return Action.SUCCESS;
}
//
ProcessInstance process = processes.iterator().next();
if (process instanceof RuleFlowProcessInstance)
{
RuleFlowProcessInstance instance = (RuleFlowProcessInstance) process;
// , request
for (NodeInstance node : instance.getNodeInstances())
{
Map<String, Object> data = node.getNode().getMetaData();
HttpServletRequest request = ServletActionContext.getRequest();
request.setAttribute("x", data.get("x").toString());
request.setAttribute("y", data.get("y").toString());
request.setAttribute("width", data.get("width").toString());
request.setAttribute("height", data.get("height").toString());
}
}
jspページのコードは以下の通りです。<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>Sign On</title>
</head>
<body>
<!-- -->
<img src="../example/apply/HumanTestUser-image.png"
style="position: absolute; left: 0px; top: 0px;">
<!-- -->
<s:div
style="position: absolute; border: 2px solid red; left: %{#request.x}px; top: %{#request.y}px; width: %{#request.width}px; height: %{#request.height}px;"></s:div>
</body>
</html>