`

jbpm5学习资料

 
阅读更多
http://blog.csdn.net/howareyoutodaysoft/article/details/8062743
jbpm5 应用锦集

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

2 jbpm5 创建session
      
StatefulKnowledgeSession sSession= kbase.newStatefulKnowledgeSession();

3 jbpm5 注册人工服务
       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 jbpm5 启动流程
           //流程启动时需要的参数
            Map<String, Object> params = new HashMap<String, Object>();
            params.put("user", username);
            sSession.startProcess("defaultPackage.HumanTestUser", params);

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

6 jbpm5 获取人工任务的参数
         //根据任务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 jbpm5 开始并且完成人工任务
           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 jbpm5 流程图形化监控
           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>
分享到:
评论
2 楼 pyzheng 2013-10-17  
不是我写的  文章里面的前面有链接的 一般都是收藏别人的东西  iteye啊  我很多时候是用来记录和收藏东西而已。
1 楼 cbigbird 2013-10-17  
写的挺好,正好在看获取人工任务的入参那块。

相关推荐

    JBPM5入门学习.doc

    ### JBPM5入门学习知识点详解 #### 一、JBPM5简介 **1.1 什么是JBPM** JBPM(Java Business Process Management)是一个开源的业务流程管理框架,旨在为开发者提供一个简单、灵活且可扩展的平台来设计、执行和...

    jbpm5入门学习

    jbpm5入门学习资料

    jbpm学习资料,jbpm教程

    本资料主要围绕jbpm的核心组件——jPDL进行讲解,帮助学习者深入理解jbpm的工作原理和应用。 jPDL(jBPM Process Definition Language)是jbpm使用的一种基于XML的语言,用于描述业务流程。它提供了一系列的元素和...

    jbpm4jbpm5

    总的来说,这个主题资料包提供了jbpm4和jbpm5的基础知识、实战经验和用户操作指导,对于想要学习或深化jbpm流程管理框架理解的开发者非常有价值。通过学习这些文档,开发者可以掌握jbpm的核心概念,熟练地设计和部署...

    JBPM相关学习资料

    【JBPM相关学习资料】 JBPM,全称Java Business Process Management,是一款开源的工作流管理系统,由Red Hat公司维护。它提供了全面的业务流程自动化解决方案,包括业务流程建模、执行和监控,以及与企业应用程序...

    jbpm5资料

    jbpm5资料是一个关于JBoss jBPM 5的资源集合,主要包含了深入浅出_jBPM_电子书.doc、Packt.Publishing.Business.Process.Management.with.JBoss.jBPM.Jul.2007.pdf和jBPM5_用户手册-中文版.pdf这三份文档。...

    jbpm4.4文档+学习资料

    压缩包中的“学习文档”很可能包含了jbpm4.4的官方文档、教程、示例代码和相关案例,这些是深入学习的重要参考资料。此外,还可以参考社区论坛、博客文章、在线课程等多渠道学习资源,提高jbpm技能。 总之,jbpm4.4...

    jbpm学习资料汇总

    【jbpm学习资料汇总】 jbpm,全称是Java Business Process Management,是一个开源的工作流管理系统,主要用于业务流程的建模、执行和管理。它提供了一种灵活的方式,使得开发人员和业务分析师能够协同工作,创建、...

    JBPM3学习资料,包括API,接口等等打包

    **JBPM3学习资源概述** JBPM3是一个开源的工作流程管理系统,它允许开发者设计、部署和执行业务流程。本资源包包含了一系列的学习材料,旨在帮助用户深入理解和掌握JBPM3的相关知识。 **核心组件与概念** 1. **...

    JBPM4整理学习资料

    【JBPM4整理学习资料】是一份全面介绍JBoss企业级业务流程管理(Business Process Management,简称BPM)系统JBPM4的教育资源。该资料集合了API文档、安装配置指南、常见操作步骤、数据库表结构解析以及流程分支与...

    jBPM5_用户手册-中文版

    通过jBPM5_用户手册-中文版.pdf,读者可以深入了解这些概念和功能,学习如何部署jBPM5,设置开发环境,创建第一个流程,以及如何使用工作流引擎进行流程实例的管理和控制。此外,手册还将涵盖如何使用jBPM提供的各种...

    JBPM5_use.zip_jBPM5

    提供的"JBPM5_用户指南.doc"文档很可能是详细的教程资料,涵盖了jbPM5的安装、环境配置、流程设计、示例项目、API使用、调试技巧等方面的内容。通过阅读这份指南,初学者可以快速掌握jbPM5的基本用法,并逐步深入到...

    JBPM4 学习使用总结

    1. **官方文档**:JBPM4的官方文档详尽介绍了其架构、API和使用方法,是学习的重要参考资料。 2. **示例项目**:通过官方提供的示例项目,可以快速理解JBPM4的基本用法。 3. **社区与论坛**:如ITEYE博客中的...

    斯坦福特jbpm学习资料

    jBPM,全称为Java Business Process Management,是一款开源的工作流管理系统,由JBoss...斯坦福特的jbpm培训ppt是一份很好的学习资源,适合初学者入门,涵盖了jBPM的基础知识和实践操作,有助于快速掌握jBPM的使用。

    jbpm工作流学习资料大全

    jbpm工作流学习资料大全是一份综合性的资源集合,涵盖了jbpm工作流的各个方面,适合初学者和进阶者深入理解这一技术。jbpm(Java Business Process Management)是一款开源的工作流管理系统,它允许开发者设计、执行...

Global site tag (gtag.js) - Google Analytics