`
wangyisong
  • 浏览: 238173 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JBPM基于Spring系统工作流平台整合6------系统基于JBPM开发(原创)

阅读更多

JBPM基于Spring系统工作流平台整合6------系统基于JBPM开发(原创)

声明:该文系作者原创,如您用于商业用途或者论文发表,请您一定要通知作者本人同意方可引用。

特别说明:其实在开发过程中主要就是调用以下接口,因此只要遵循WFMC标准的工作流引擎,可以轻松切换,比如协同的Synchroflow,整个系统切换只需要1周左右的时间(系统整体设计要考虑充分),仅仅是更换流程引擎底层接口而已。因为系统充分考虑到各个工作流平台的共性,而通过系统的中间层屏蔽掉各工作流平台的差异性。

读者可能注意到前文所描述的WFMC图,需要强调一点,系统调用工作流API接口完全通过中间层设计达到完美整合,但是工作流调用系统接口,限于每个工作流平台具体的差异化,有一定的整合工作量,这个无法回避。

有点凌乱,呵呵,欢迎大家进行交流,共同进步。

1.1.   创建流程实例

//创建流程实例,创建流程实例必须以流程模型定义的名称,因为流程每部署一次,

//对应的最新的流程定义ID就会变化

WfProcessIns wfProcessIns = wfManageService.createWfProcessIns("LeaveProcess");

 

    // 工单字段必须存储流程实例的ID,以根据流程实例ID获取相应的工单

    wsLeave.setProgressInstanceId(wfProcessIns.getProcessInsId());   

1.2.   启动流程实例

//启动流程实例

wfManageService.startWfProcessIns(wfProcessIns.getProcessInsId());

1.3.   更新全局或者节点变量

//变量以HashMap<String,String>方式

//变量的Value都以String的方式传递

HashMap varMap = new HashMap();

    varMap.put("manageroper", "approve");

varMap.put("leavedays", "60");

 

    //更新相关变量

wfManageService.setRelevantVariable(wsLeave.getProgressInstanceId(), varMap);

1.4.   完成任务实例

//完成任务

//完成任务之前,如果有变量要更新,则在完成任务之前调用更新变量的方法

wfManageService.completeWfTaskIns(wfTaskInsId);

1.5.   获取待办任务

//获取待办任务列表

List wfTaskInsLs =

wfManageService.getWfTaskInsLsByUserId(String.valueOf(this.getCurrentUser().getId()));

1.6.   流程监控

/jbpmProcessImageServlet?processInsId=XXX

 

 系统调用JBPM接口方式

通过UNICALL系统定义的工作流中间层接口访问,完全屏蔽掉JBPM的个性化差异。

举例:

//创建流程实例

WfProcessIns wfProcessIns = wfManageService.createWfProcessIns("LeaveProcess");

模型调用系统接口方式

通过模型JPDL定义的ActionHandler方式,通过UNICALL系统ServiceFactory方式调用系统接口。

抽象调用的Handler Action,比如消息通知、结束后更新工单状态。

举例:

在模型定义中引用即可,具体代码如下:

/**

 * 流程实例完成进行数据归档等等

 * @author Wang YiSong

 */

public class CompleteProcessInsHandler implements ActionHandler {

    private static final Log log = LogFactory.getLog( CompleteProcessInsHandler.class);

    public void execute(ExecutionContext executionContext) throws Exception { 

        log.debug("=====Action=======testEventHandler.execute()==");

        ProcessInstance pi = executionContext.getContextInstance().getProcessInstance();

        log.debug("process instance id" + pi.getId());

……

}

 

 

 

分享到:
评论

相关推荐

    JBPM基于Spring系统工作流平台整合(一)

    1-版本以及系统配置jbpm版本3.2.3http://www.jboss.com/products/jbpm下载后的文件是jbpm-jpdl-suite-3.2.3.zip,解压缩,可以直接通过JBOSS方式启动。http://localhost:XXXX/jbpm-console。jbpm-jpdl-3.2.3下各...

    基于JBPM工作流的OA办公系统

    **基于JBPM工作流的OA办公系统** JBPM(Java Business Process Management)是Talend公司推出的一款开源的工作流管理系统,主要用于实现业务流程自动化。它提供了全面的工作流解决方案,包括流程设计、执行、监控和...

    jbpm工作流整合

    jbpm工作流整合是一个关键的主题,它涉及到企业级业务流程管理(BPM)系统的实施与集成。jbpm是一个开源的工作流管理系统,它提供了一套全面的工具和框架,用于设计、执行、监控和优化业务流程。这个压缩包可能包含...

    jbpm-2.0-beta1.zip_java 工作流引擎_jbpm_jbpm-demo_工作流_工作流引擎

    标签中的"java_工作流引擎"强调了jbpm是用Java语言开发的,这意味着它可以无缝融入Java生态系统,利用Java的跨平台特性,确保在各种操作系统上运行稳定。"jbpm-demo"是指包含的示例项目,用于演示jbpm的功能和使用...

    jbpm4.3-spring2.5整合

    jbpm4.3-spring2.5整合是一个关键的话题,涉及到企业级工作流管理系统Jbpm与Spring框架的集成。Jbpm是一个开源的工作流程管理(BPM)和业务规则管理系统,它允许开发者设计、执行、管理和监控业务流程。而Spring是...

    Spring与JBoss JBPM工作流集成开发指南

    Spring与JBoss JBPM工作流集成开发指南 Spring与JBoss JBPM工作流集成开发指南是关于JBPM与Spring框架集成的开发文档,涵盖了工作流的基本概念、设计要点、常见问题解答、参考资源等。下面是从该文件中生成的相关...

    基于struts+spring+hibernate+jbpm的工作流系统

    基于Struts、Spring和Hibernate的集成框架SSH,加上流程管理工具jbpm,构建出的工作流系统是一种高效、灵活的企业级应用解决方案。这种系统主要用于实现业务流程自动化,提升企业的运营效率。 **Struts**:Struts是...

    struts+hibernate+spring+jbpm智能工作流系统

    Struts、Hibernate、Spring 和 jBPM 是四个在企业级应用开发中广泛使用的开源框架,它们结合在一起可以构建出高效且灵活的智能工作流系统。下面将分别介绍这些技术及其在工作流系统中的作用。 **Struts** Struts 是...

    JBPM4与Spring整合例子代码

    将JBPM4与Spring进行整合,可以充分利用Spring的灵活性和JBPM4的流程管理能力,构建高效且可扩展的OA(Office Automation)工作流系统。 在"风中叶老师讲的JBPM4与Spring整合例子代码"中,我们可以了解到如何将这两...

Global site tag (gtag.js) - Google Analytics