jbpm5学习资料

[url]http://blog.csdn.net/howareyoutodaysoft/article/details/8062743[/url]
jbpm5 应用锦集

[color=blue][b]1 jbpm5 加载知识库[/b][/color]
        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory
.newKnowledgeBuilder();
kbuilder.add(
ResourceFactory.newClassPathResource("HumanTestUser.bpmn"),
ResourceType.BPMN2);
KnowledgeBase kbase = kbuilder.newKnowledgeBase();

[color=blue][b]2 jbpm5 创建session[/b][/color]
StatefulKnowledgeSession sSession= kbase.newStatefulKnowledgeSession();

[color=blue][b]3 jbpm5 注册人工服务[/b][/color]
       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);


[color=blue][b]4 jbpm5 启动流程[/b][/color]
           //流程启动时需要的参数
Map<String, Object> params = new HashMap<String, Object>();
params.put("user", username);
sSession.startProcess("defaultPackage.HumanTestUser", params);

[color=blue][b]5 jbpm5 根据用户名称获取当前需要执行的人工任务[/b][/color]
            List<TaskSummary> taskes = sTaskService
.getTasksAssignedAsPotentialOwner(username, "en-UK");
for (TaskSummary task : taskes) {
//人工任务的名称
task.getName();
//人工任务的ID
task.getId();
}

[color=blue][b]6 jbpm5 获取人工任务的参数[/b][/color]
         //根据任务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());
}
}
}
}

[color=blue][b]7 jbpm5 开始并且完成人工任务[/b][/color]
           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);
}

[color=blue][b]8 jbpm5 流程图形化监控[/b][/color]
           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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值