`
redxun
  • 浏览: 298377 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Activiti的流程如何与外部业务进行数据交互

 
阅读更多

如何通过流程审批与外部表单实现对接

 

在流程的审批过程中,我们有很多业务是需要进行流程的审批的,但实际上这些业务在大部分处理上跟流程上是无关的,他们只是有部分业务的数据需要参与审批的动作而已,如:

销 售采购合同,制订采购合同是需要走审批流程,一旦审批完成后,这个采购合同后续的执行是则是由采购合同模块本身的处理来完成,后续跟审批操作没有多太关 系。在系统设计上,我们需要开发一个单独的模块进行采购合同的处理,但我们又希望他们有些信息是需要参与审批,并且在审批完成后,能完成对采购合同进行修 改。

为了更形象说明这个整合开发原理,我们举一个简单的例子:如供应商入库,前期的供应商信息我们是需要审批的,一旦审批通过后,我们后续 的其他业务模块就可以使用供应商的信息。为此我们基于activiti进行了了灵活的处理,本文先介绍其中一方便快捷的方法,本文的前提就是供应商管理模块已经存在。我们 需要在供应商表中加一个字段 act_inst_id_,用于存储Activiti的流程实例Id,用于后续追踪供应商的审批过程。

 

步骤一

根据供应商的信息制作在线表单,如:
1.png

步骤二

编写供应商的数据处理接口

1.通过审批表单的数据来创建供应商

实现流程在启动时创建时调用供应商的创建接口,实现接口ProcessStartAfterHandler即可。

2.通过审批表单更新供应商的数据

实现TaskAfterHandler接口即可

3.通过审批表单的审批触发供应商数据的审批状态

实现ProcessEndHandler即可。

代码说明

以下是我们把以上三个实现均放在CrmProviderManager中来实现,代码如下所示:

@Service
public class CrmProviderManager extends BaseManager<CrmProvider> implements
ProcessStartAfterHandler,TaskAfterHandler,ProcessEndHandler{


    /**
  * 通过Json数据创建供应商
  * @param json
  * @param bpmInstId
  * @return
  */
public CrmProvider createFromJson(String json,String actInstId){
  CrmProvider crmProvider=JSON.parseObject(json, CrmProvider.class);
 //关联流程实例ID
 crmProvider.setActInstId(actInstId);
  crmProviderDao.create(crmProvider);
 return crmProvider;
}
/**
  * 通过Json更新供应商的值
  * @param json
  * @param busKey
  */
public void updateFromJson(String json,String busKey){
  CrmProvider orgProvider=get(busKey);
 if(orgProvider==null) return;
  CrmProvider newProvider=JSON.parseObject(json,CrmProvider.class);
 try {
   BeanUtil.copyNotNullProperties(orgProvider, newProvider);
 } catch (Exception e) {
   e.printStackTrace();
 }
  crmProviderDao.update(orgProvider);
}

/**
  * 1.通过流程实例创建完成后通过表单的数据创建供应商信息
  */
@Override
public String processStartAfterHandle(String json, String actInstId) {
  CrmProvider crmProvider=createFromJson(json,actInstId);
  crmProvider.setStatus(MStatus.INIT.name());
//返回业务主键给流程实例
 return crmProvider.getProId();
}


/**
  * 2.任务审批完成时调用,用于更新供应商的数据
  */
@Override
public void taskAfterHandle(IExecutionCmd cmd, String nodeId, String busKey) {
  updateFromJson(cmd.getJsonData(),busKey);
}
/**
  * 3.流程成功审批完成时,对供应商的审批状态进行更新
  */
@Override
public void endHandle(BpmInst bpmInst) {
  String busKey=bpmInst.getBusKey();
  CrmProvider crmProvider=crmProviderDao.get(busKey);
 if(crmProvider!=null){
   crmProvider.setStatus(MStatus.ENABLED.name());
   crmProviderDao.update(crmProvider);
 }
}

}

 

步骤三

配置流程定义及流程解决方案,实现以下几点,特别是节点上的数据配置处理

关联审批表单

关联审批人员

在节点上配置调用供应商的数据处理接口

 

 

 

3-1.png

4.png

配置完成后,流程启动在审批过程中,就会调用对应的供应商接口实现数据的同步处理了。

步骤四

若我们需要在供应商管理模块中,点添加的时候,就可以实现启动供应商审批流程,这时我们需要做一点配置。在全局的模块流程绑定模块中,配置供应商模块中的流程,同时在供应商添加管理模块中,调用这个配置处理。如下:

5.png

在供应商管理模块中增加以下调用,用来替换原来的添加处理即可,同时增加查看流程实例的信息调用:

 

   //处理添加
       function _add(){
        //检查是否存在流程配置,若没有,则启用本地的默认配置
        _ModuleFlowWin({
          title:'供应商入库申请',
          moduleKey:'CRM_PROVIDER',
         //failCall:add,
         success:function(){
           grid.load();
         }
        });
       }
//查看流程审批实例信息
function checkDetail(actInstId){
         _OpenWindow({
          title:'审批明细',
          width:800,
          height:480,
          url:__rootPath+'/bpm/core/bpmInst/get.do?actInstId='+actInstId
        });
       }

 

 

这时我们在这个模块中添加供应商时,即可以显示供应商的填写流程申请入口。如下所示:

6.png

同时在供应商管理中可以看到流程审批的相关信息

7.png

最终的使用效果如下所示:

http://www.redxun.cn:8020/saweb/login.jsp

 

分享到:
评论

相关推荐

    oa项目中的activiti流程demo

    综上所述,"oa项目中的activiti流程demo"是一个全面展示Activiti在OA项目中应用的实例,涵盖了流程定义、任务管理、业务逻辑集成、UI交互、监控和优化等多个方面,为开发者提供了宝贵的实践参考。通过深入理解并运用...

    Activiti工作流示例Activiti Demo(带完整源码)非常实用

    通过学习和实践这个示例,开发者不仅可以掌握Activiti的基本使用,还能了解到如何将流程引擎与实际业务场景相结合,提升企业的业务流程自动化水平。同时,Activiti的灵活性和扩展性也使其成为企业级应用开发的热门...

    Activiti5.4 用户指南-中文版

    6. **服务调用**:Activiti 可以与外部服务进行交互,通过服务任务(Service Task)调用业务逻辑、数据库操作或其他系统接口。这使得 Activiti 能够无缝集成到现有的企业架构中。 7. **监控与审计**:Activiti 提供...

    activiti流程说明

    5. **表单集成**:Activiti允许集成自定义表单,提供业务数据输入和展示。可以通过Form Key与流程中的表单字段关联,实现数据的双向绑定。 6. **变量管理**:在流程执行过程中,可以设置和获取流程变量,这些变量...

    Activiti-activiti-5.22.0 源码

    源码中可以研究表单的定义、渲染和数据交互。 6. **服务任务与工作流集成**:Activiti 提供了服务任务,可以调用外部系统或服务。源码中可以看到服务任务的调用机制,以及与外部系统集成的接口设计。 7. **流程...

    Activiti实战 高清完整中文PDF版

    9. **流程审计与历史数据**:探讨如何利用Activiti的审计功能,收集流程执行的历史数据,为业务分析和决策提供依据。 10. **流程优化与最佳实践**:分享在实际项目中使用Activiti的经验和技巧,提出一些优化流程...

    Activiti官方唯一推荐中文书籍——《Activiti实战》示例源码

    3. **Service Task与业务逻辑集成**:在示例中,你将看到如何通过Service Task将Activiti流程与自定义业务逻辑结合,例如调用外部服务或者执行复杂的业务规则。 4. **表单与用户界面集成**:Activiti支持与前端UI的...

    activiti实战及示例源码

    书中会讲解如何设计和集成自定义表单,以及与后端系统的数据交互,如数据库操作和外部服务调用。 7. **监听器与事件处理**:学习如何使用监听器来扩展Activiti的行为,例如在流程的特定阶段触发自定义逻辑,或者...

    activiti流程文件细解.doc

    这个文档《Activiti流程文件细解》深入探讨了Activiti流程定义的关键元素,帮助我们理解如何设计和实现复杂的业务流程。 首先,我们要了解的是`&lt;process&gt;`标签,它是流程定义的基本单位。在这个例子中,`请假流程-...

    activiti-5.13.zip

    6. **服务调用**:Activiti可与外部系统进行交互,例如调用Web服务、数据库操作或其他企业应用接口。 7. **历史记录**:提供对流程实例和任务的历史记录,便于跟踪和审计。 8. **安全性与权限**:通过角色和权限...

    java源码:业务流程管理(BPM)和工作流系统 Activiti.zip

    6. **表单支持**:通过表单引擎,可以将业务数据与流程紧密结合。 7. **持久化机制**:Activiti使用关系数据库存储流程实例和相关数据,确保数据安全。 8. **API与服务**:提供丰富的Java API和RESTful服务接口,...

    Activiti-5.22.0 官网资源

    3. **服务任务与集成**:Activiti 可以与外部系统和服务进行交互,例如通过 REST API 或 SOAP Web 服务。在 `WEB-INF` 目录下,可能包含用于配置这些服务任务的 XML 文件,如 `processes.xml`,它们定义了服务调用的...

    activiti用户指南.zip

    总结,Activiti 6.x 用户指南是开发者和流程管理人员的重要参考资料,涵盖了从安装配置到实际应用的全方位指导,对于理解和使用 Activiti 进行业务流程自动化具有极大价值。通过深入学习和实践,可以充分利用 ...

    activiti实战源代码

    6. **流程变量与数据交互**:学习如何设置、获取流程变量,以及如何将这些变量与外部系统(如数据库或Web服务)的数据交互。 7. **动态流程变更**:了解如何在运行时通过API动态改变流程实例的行为,比如修改任务...

    Activiti.in.Action

    - **Database Integration (DB)**:Activiti Engine需要与数据库进行交互,存储流程定义、实例状态和其他元数据。 **2. BPMN 2.0标准** - ****:根元素,包含所有流程定义相关的数据。 - ****:定义了一个具体的...

    关于activiti rest服务

    总结来说,Activiti REST服务是Activiti引擎与外部系统交互的重要桥梁,它使得流程管理更加灵活和便捷。开发者应当熟悉这些接口,以便在实际工作中高效地利用Activiti实现业务流程自动化。通过深入学习和实践,我们...

    Activiti笔记,很全面

    8. **服务任务与API**:在流程中,服务任务通常用来调用外部业务逻辑,如调用数据库、发送邮件等。Activiti提供API让开发者注册服务任务的实现类,方便扩展流程功能。 9. **事件与信号**:事件和信号用于流程的异步...

    activiti-6.0.0

    10. **API 使用**:通过 Activiti 的 Java API 或 REST API 进行编程交互,例如启动流程、完成任务、查询数据等。 了解并掌握这些知识点,开发者就能充分利用 Activiti 6.0.0 来搭建高效且灵活的企业工作流管理系统...

    activiti 5.22完整包下载 activiti-explorer.war

    这个界面使得非技术人员也能方便地与 Activiti 进行交互,例如创建和修改流程定义,启动新的流程实例,以及跟踪当前正在执行的流程。 "META-INF" 目录是 Java 应用的标准组成部分,其中包含了关于应用程序的重要元...

    Activiti6.x中文用户指南 html

    7. **表单与变量**:Activiti支持与业务数据的交互,表单和变量是实现这一目标的关键。用户将了解如何定义表单字段,如何使用流程变量存储和传递数据。 8. **事件与信号**:这部分将介绍流程中的事件和信号,如中断...

Global site tag (gtag.js) - Google Analytics