日期:2014-05-16 浏览次数:20510 次
?
会签的例子依然采用Nutz+ExtJS+JBPM来实现。
?
这里只讲讲会签的实现,其他细节可以参考这篇文章http://pangwu86.iteye.com/blog/1114082
?
#######################邪恶的分割线#######################
?
首先介绍下什么是会签
?
会签
?
会签是撰拟公文的过程中,主办单位主动与有关单位协商并核签的一种办文程序,一般当公文的内容涉及本单位的多个部门或与其他单位有关时,需要进行会签。会签根据对象的不同分为内部会签和外部会签。内部会签用于与本单位内部的各有关部门进行协商并核签;外部会签用于与外单位的有关部门进行协商并核签;二者的性质相同,但处理形式不同。
在管理系统中的会签流程,例如公司职员离职、大学生毕业离校都要在不同的部门去签字确认,这里去哪个部门签字没有顺序之分,但所有部门签字完毕后才可以离职或离校。
?
?
?
会签的情况会有很多中,根据复杂程度,一般可以分为单步会签(只有一个活动处理会签任务),以及多步会签(由多个任务组成的)
?
这里只介绍下常见的,也是业务中最常遇到的单步会签。
?
?
单步会签常见有4种情况:
?
?
?
?
这里要说一下,在查找会签的资料时,yy269兄的http://yy629.iteye.com/blog/660701与phoenix.clt兄的http://phoenix-clt.iteye.com/blog/428242这两篇文章给了很大的启发,后面的实现也借鉴了他们的一些好的思想,需要的朋友可以去看一看。
?
?
下面的部分将会讲述如何实现一个动态会签(会签人数,人员,会签规则都可以自由设定)
?
好,接下来看一下今天举得这个申请经费的例子:
?

贴一下jpdl.xml文件
?
<?xml version="1.0" encoding="UTF-8"?>
<process name="jingfeishenqing" xmlns="http://jbpm.org/4.4/jpdl">
<description><![CDATA[
经费申请,大于30万需要老总们会签(采用一票否决制)
]]></description>
<!-- 会签决策实现类 -->
<variable name="calc.countersignCalculatorImpl" type="string">
<string value="org.nutz.jbpm.countersign.impl.AllAgreeSign" />
</variable>
<!-- 以下三个参数只有按百分比策略才会用到,可以根据需要来设定 -->
<!-- 最小同意数 -->
<variable name="calc.minAgreeSize" type="int">
<int value="2"/>
</variable>
<!-- 最小同意比例(请设定一个在0-1之间的数字) -->
<variable name="calc.minAgreePercent" type="float">
<float value="0.6"/>
</variable>
<!-- 是否使用按比例(true为按照比例,false为按照人数) -->
<variable name="calc.userPercent" type="boolean">
<false/>
</variable>
<start g="81,8,48,48" name="start1">
<transition g="-60,13" name="申请经费" to="申请经费" />
</start>
<task assignee="${employee}" form="countersign/applyfor.jsp" g="304,65,92,52"
name="申请经费">
<transition name="金额判断" to="判断1" g="-69,-22" />
</task>
<decision expr="#{money > 300000 ? '大于30万' : '小于等于30万'}" g="190,144,48,48"
name="判断1">
<transition g="-39,14" name="大于30万" to="领导会签" />
<transition g="-80,-21" name="小于等于30万" to="财务