Jbpm表单流转的示意图

一、示意图:
这里写图片描述

二、实体类:
1、申请模板

/**
 * 实体:申请模板
 * 
 * @author chen.lin
 * 
 */@Entity
 @Table(name = "workflow_applicationTemplate")
public class ApplicationTemplate {

    private Long id;
    private String name;
    private String processDefinitionKey;
    private String path; // 文件在服务器端存储的路径
    private Set<Application> applications = new HashSet<Application>();

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getProcessDefinitionKey() {
        return processDefinitionKey;
    }

    public void setProcessDefinitionKey(String processDefinitionKey) {
        this.processDefinitionKey = processDefinitionKey;
    }

    public String getPath() {
        return path;
    }

    public void setPath(String path) {
        this.path = path;
    }

    @OneToMany(cascade= {CascadeType.ALL},fetch=FetchType.EAGER ,mappedBy="applicationTemplate")
    @OrderBy("id asc")
    public Set<Application> getApplications() {
        return applications;
    }

    public void setApplications(Set<Application> applications) {
        this.applications = applications;
    }



}

2、申请表单

/**
 * 表单申请
 * @author Administrator
 *
 */
@Entity
@Table(name = "workflow_application")
public class Application {
    /** 表单状态常量:审批中 */
    public static final String STATUS_RUNNING = "审批中";
    /** 表单状态常量:已通过 */
    public static final String STATUS_APPROVED = "已通过";
    /** 表单状态常量:未通过 */
    public static final String STATUS_REJECTED = "未通过";

    private Long id;
    private ApplicationTemplate applicationTemplate;
    private Set<ApproveInfo> approveInfos = new HashSet<ApproveInfo>();
    private User applicant;// 申请人

    private String title;// 标题
    private Date applyTime;// 申请时间
    private String path;// 文档的存储路径
    private String status; // 当前的状态

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    @ManyToOne
    @JoinColumn(name="applicationTemplateId")
    public ApplicationTemplate getApplicationTemplate() {
        return applicationTemplate;
    }

    public void setApplicationTemplate(ApplicationTemplate applicationTemplate) {
        this.applicationTemplate = applicationTemplate;
    }

    @ManyToOne
    @JoinColumn(name="applicantId")
    public User getApplicant() {
        return applicant;
    }

    public void setApplicant(User applicant) {
        this.applicant = applicant;
    }

    public Date getApplyTime() {
        return applyTime;
    }

    public void setApplyTime(Date applyTime) {
        this.applyTime = applyTime;
    }

    public String getPath() {
        return path;
    }

    public void setPath(String path) {
        this.path = path;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    @OneToMany(cascade= {CascadeType.ALL},fetch=FetchType.EAGER ,mappedBy="application")
    @OrderBy("id asc")
    public Set<ApproveInfo> getApproveInfos() {
        return approveInfos;
    }

    public void setApproveInfos(Set<ApproveInfo> approveInfos) {
        this.approveInfos = approveInfos;
    }
}

3、审批信息

@Entity
@Table(name = "workflow_approveInfo")
public class ApproveInfo {
    private Long id;
    private Application application; // 
    private User approver;// 审批人

    private Date approveTime;// 审批时间
    private boolean approval; // 是否通过
    private String comment; // 审批意见

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    @ManyToOne
    @JoinColumn(name="approverId")
    public User getApprover() {
        return approver;
    }

    public void setApprover(User approver) {
        this.approver = approver;
    }

    public Date getApproveTime() {
        return approveTime;
    }

    public void setApproveTime(Date approveTime) {
        this.approveTime = approveTime;
    }

    @ManyToOne
    @JoinColumn(name="applicationId")
    public Application getApplication() {
        return application;
    }

    public void setApplication(Application application) {
        this.application = application;
    }

    public boolean isApproval() {
        return approval;
    }

    public void setApproval(boolean approval) {
        this.approval = approval;
    }

    public String getComment() {
        return comment;
    }

    public void setComment(String comment) {
        this.comment = comment;
    }
}

三、【审批流转的约定】:

审批流程:
第一个环节是“提交申请”,以后每个环节基本上都是“审批”环节。

1,第一个活动是“提交申请”,办理人是申请人,也就是提交申请时的当前登录用户。

2,在我们的程序中,使用User对象表示用户,在JBPM中使用字符串表示参与者。
可以使用User中的一个不会重复的属性值作为JBPM的用户标识。
比如可以是id.toString()或是loginName.

3,在第一个“提交申请”的环节中会产生一个“申请信息”,
要求在流程中后面的每个环节中都应能方便的获取这个“申请信息”。
可以在“提交申请”环节设置一下流程变量:setVariable(“application”, application);

4,(对应第一条)“提交申请”环节的办理人应写为:assignee=”#{application.applicant.loginName}”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lovoo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值