HAP_工作流自定义操作

业务流程:


image.png

2. 实现:

image.png
**接下来就开始通过图形化界面进行工作流的设计了:**

首先要设计好贷款请求的处理流程:

接收用户发出的贷款申请->检查信用度->评估贷款请求

->批准->处理请求\

->拒绝->邮件通知用户->结束

点击上图中的编辑图标,进入工作流的图形化界面设计
  1. 首先定义开始事件,开始事件用于触发工作流


    image.png

    image.png

    image.png

    该开始事件设置两个初始参数:amount(贷款金额)、credit(信用度).

  2. 增加检查信用度的服务任务


    image.png

    服务任务需要一个java实现类

package wht.ora20796.components;

import com.hand.hap.activiti.custom.IActivitiBean;
import org.activiti.engine.delegate.DelegateExecution;
import org.activiti.engine.delegate.JavaDelegate;
import org.springframework.stereotype.Component;

@Component
public class CreditService implements JavaDelegate, IActivitiBean {
    @Override
    public String getBeanName() {
        return "checkCredit";
    }

    @Override
    public void execute(DelegateExecution delegateExecution) {
        Integer amount = delegateExecution.getVariable("amount", Integer.class);
        Integer credit = delegateExecution.getVariable("credit", Integer.class);
        if (amount > credit * 1000) {
            delegateExecution.setVariable("accept", Boolean.FALSE);

        } else {
            delegateExecution.setVariable("accept", Boolean.TRUE);
        }
    }

}

getBeanName的返回的值会在代理表达式中使用,注意这里需要将该类的包名加入到spring扫描的包路径中.
更改spring配置文件applicationContext-beans.xml 如下

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
    <!--自定义上传配置-->
    <bean id="multipartResolver"
          class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!--setthemaxuploadsize100MB-->
        <property name="maxUploadSize">
            <value>104857600</value>
        </property>
        <property name="maxInMemorySize">
            <value>4096</value>
        </property>
    </bean>
    <!--工作流中的实现信用检查的服务任务-->
  <!--  <context:component-scan base-package="wht.ora20796.components"/>-->
    <context:component-scan base-package="*.*.components"/>
</beans>

完成之后配置服务任务的代理表达式的值


image.png
  1. 使用单一网关处理接受和拒绝


    image.png

    image.png

    image.png
  2. 拒绝后通过邮件提醒


    image.png

    image.png

    在该组件上填写相应的信息

  3. 增加评估请求的人工任务


    image.png

    image.png

    image.png

    设置任务的到期时间为(到期时间的表示方法为ISO8601)3分钟,并选择审批规则,指定审批人为周杰森。

  4. 在评估请求环节添加边界定时事件(注意线要连正确了)
    如果3分钟后没处理转交管理员


    image.png
  5. 新增管理员评估处理评估请求超时的任务


    image.png

    设置审批规则中指定人为admin;不设置到期日期。

  6. 使用单一网关处理审批通过和未通过,若通过,则处理请求。
    image.png

    通过新增跳转条件:{approveResult=='APPROVED'} 未通过新增跳转条件:{approveResult=='REJECTED'}
    处理请求需新增一个java类,如下:
package wht.ora20796.components;

import com.hand.hap.activiti.custom.IActivitiBean;
import org.activiti.engine.delegate.DelegateExecution;
import org.activiti.engine.delegate.JavaDelegate;
import org.springframework.stereotype.Component;

@Component
public class ProcessLoan  implements JavaDelegate,IActivitiBean {
    @Override
    public void execute(DelegateExecution delegateExecution) {
        System.out.println("\n\n"+"处理借款申请"+"\n\n");

    }

    @Override
    public String getBeanName() {
        return "processLoan";
    }
}

image.png

2. 发布工作流

image.png

进入工作流测试页面:


image.png

接下来请自行测试...

常见bug:

问题1
image.png

比如:

问题2
image.png
问题3
image.png
问题4:邮件发送错误
image.png

image.png

或者:


image.png
问题5:发布不成功,未知错误发生,无法保存模型

2018-08-07 09:52:22.615 ERROR [10001] [1534602146e843089bc5979677368ca6] com.hand.hap.activiti.controllers.ModelSaveRestResource - Error saving model
org.apache.batik.transcoder.TranscoderException: null
Enclosed Exception:
Element type "path" must be followed by either attribute specifications, ">" or "/>".
    at 
image.png

没有名称


image.png
问题5:发布不成功,未知错误发送,无法保存模型
2018-08-07 09:52:22.615 ERROR [10001] [1534602146e843089bc5979677368ca6] com.hand.hap.activiti.controllers.ModelSaveRestResource - Error saving model
org.apache.batik.transcoder.TranscoderException: null
Enclosed Exception:
Element type "path" must be followed by either attribute specifications, ">" or "/>".
    at 
org.apache.batik.transcoder.XMLAbstractTranscoder.transcode(XMLAbstractTranscoder.java:136)
image.png

换浏览器,换一个非IE内核的,其他浏览器也不要选兼容模式,要选高速/极速浏览器

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.Typescript中的&理解 参数中的 & 表示props对象同时拥有了TagManagementState...
    Lethe35阅读 7,664评论 0 1
  • 夜晚是沉重的, 隔壁传来的说话声。 如同遥远的某个晚上听到, 回忆,就像劲驰的冬风一般, 吹的我脑袋迷糊, 读了好...
    骄傲的鞋子阅读 246评论 0 0
  • 衣带渐宽终不悔,为儿消得人憔悴。父母之爱子,大抵就是这样了吧。滴水之恩尚且涌泉相报,那大于天的养育之恩,又该如何报...
    山月不知心事阅读 758评论 0 6
  • 长久以来,我感到痛苦。 我似乎得了很严重的抑郁症,医生安慰我,让我积极配合治疗,可是他看我的眼神空洞而冷漠。我知道...
    江中云阅读 313评论 0 0
  • 市残联领导来校传达重要指示
    菏泽儿童康复中心阅读 113评论 0 0