先来看看关于工作流、审批流的定义:
(1)PAAS平台工作流&审批流的定义:
工作流:可自己定义的一种自己主动运行的工作流程,由表单数据发生改变时触发,同一时候触发关联多种不同的事物。
审批流:可自己定义的一种审批流程,须要用户手动批示是否同意进入下一步,触发审批流程规则须要满足审批申请人和数据筛选条件。
(2)百度百科工作流&审批流的定义:
工作流:在多个参与人员之间依照事先定义好的规则传递信息、文档或任务的过程自己主动运行,从而实现某个预期的业务目标,或者促使该目标的实现。
工作流的优点:
(1)降低了记录分配,任务指派过程中很多不必要的 *** 作;
(2)通过标准化流程提高工作效率;
工作流应用场景:当新增客户信息时,区域A的客户自己主动分配给业务员A,区域B的客户自己主动分配给业务员B,并发送邮件或者短息通知相关业务员。
审批流:审批流定义节点用来为某个详细的业务单据或某个详细单据的一个业务类型进行审批流程的定义。被定义了审批流程的单据将依照定义的审批流程被传递和审批。这一完整的过程就称为审批流。
概述:通常的流程一般分为2个层次来讲:流程、步骤(活动或者节点):
(1)流程就是某一详细的业务流程(请假审批流程,财务报销审批流程);
(2)步骤(活动或者节点)就是一种特定业务类型的封装;
一套完整的审批流程、工作流程大体上包含:
(1)流程定义;
(2)步骤定义:触发规则; *** 作人;运行动作(发起申请、撤回);运行 *** 作(任务通知、邮件提醒、字段更新、转移数据、转换表单、传送接口);
(3)步骤反复:触发规则; *** 作人(串行/并行);运行动作:(审批处理:通过、拒绝(退回、否决)、撤回);运行 *** 作:允许、拒绝同一时候包含(任务通知、邮件提醒、字段更新、转移数据、转换表单、传送接口);
(4)流程结束;
名词解释:
第一: *** 作人处理
(1)串行:上一处理人指定某一处理人时,其它拥有此步骤权限的 *** 作员不可进行查看和 *** 作,必须当前处理人处理完成后,流程才干继续;
(2)并行:由上一处理人指定固定多个处理人时,由任一员工处理就可以,不分前后顺序,所有处理完毕,进入下一步骤;
这里有2点须要说清楚:
(a)多人处理分为:一人通过(当中一人进程审批处理就可以)、多人通过(全部审批人都须要进行审批处理)2种情况,请依据自己的业务详细选择;
(b)设定审批人分为:由提交人指定、自己主动依照角色层级关系分配、选择审批人3种情况,请依据自己的业务详细选择;
两者的相应图例如以下:
第二:运行动作
(1)申请:针对当前业务表单信息发起申请,开始审批流程的传递。分为2部分:由申请提交人手动发起申请、由程序自己主动推断满足触发规则的数据自己主动发起申请;另外还要注意的2点:是否同意提交人撤消(是、否)、记录编辑(不可编辑、管理员可编辑、管理员和审批人都可编辑 );
(2)通过:当前步骤处理通过,进入下一步骤,若为末步骤,则流程处理完毕;
(3)退回:将步骤退回至上一步骤,即返回至上一处理人处,若为首步骤,则不进行退回;
(4)否决:将步骤直接结束,运行结束动作拒绝活动,不再进行 *** 作,或者回退至第一步骤;
(5)撤回:若当前步骤已处理,下一处理人未处理的情况下可进行撤回 *** 作。
上面须要注意的是:拒绝的时候是采用“退回”还是“否决”动作。以下几种情况的相应图:
第三:运行 *** 作
(1)任务通知:定义的系统内任务自己主动生成,能够由定义好的流程调用,在流程运行到适当时机发送系统内任务通知相关人员;
(2)邮件提醒:定义给系统内部和外部人员发送邮件提醒的事务。能够在工作流和审批流中调用,在流程运行到适当时机发送邮件通知流程相关人员;
(3)数据更新:用于流程运行的事务,能够在流程运行到指定位置,依照设置好的数据更新规则,指定更新本表单或关联表单的数据;
(4)表单转换:设置一个表单的数据,按转换模板映射生成还有一个或几个表单数据。假设表单带有子表单数据,也能够设置子表映射转换到相应表单的子表单;
(5)数据转移:能够将表单数据转移给设置好的目标用户。能够在工作流和审批流中,须要转移数据的环节调用此数据转移;
(6)传输接口:工作流和审批流假设须要将流程结果触发到第三方系统。
select count(*) where fid=2union
select count(*) where fid in select id where fid = 2
union
select count(*) where fid in select id where fid in select id where fid = 2
具体语法记不清了,差不多就是这种结构的
打开数据库那就不写了。
前几天刚写了一个。你看下
/* 表结构
CREATE TABLE `lh_categroy` (
`id` int(10) NOT NULL auto_increment,
`parentid` int(6) NOT NULL,
`name` varchar(255) NOT NULL,
`keyword` varchar(255) NOT NULL COMMENT '关键字',
`des` varchar(255) NOT NULL COMMENT '描述',
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`)
) ENGINE=MyISAM AUTO_INCREMENT=44 DEFAULT CHARSET=utf8
*/
/**
* 获得所有栏目排序后的列表
* @return array
*/
function getAllOrderColumns($id = 0) {
global $columns
$result = array()
if ($id) $result[$id] = $columns[$id]
foreach ($columns as $column) {
if ($column['parentid'] == $id) {
$column['level'] = 0
$result[$column['id']] = $column
getColumns($columns, $column['id'], $result, 1)
}
}
return $result
}
function getColumns($columns, $cid, &$result, $l = 1) {
foreach ($columns as $c) {
if ($c['parentid'] == $cid) {
$c['level'] = $l
$result[$c['id']] = $c
getColumns($columns, $c['id'], $result, $l + 1)
}
}
}
$sql = 'select * from lh_categroy'
$query = mysql_query($sql)
while($row = mysql_fetch_assoc($query)){
$columns[]=$row
}
$fenlei = ''
$fenlei = '<select name="cid" style="width:200pxheight:25px">
<option value="0">请选择分类</option>'
foreach(getAllOrderColumns() as $v){
$v[name] = $v[level] ? ($v[level]==1 ? '&nbsp&nbsp|-'.$v[name]:'&nbsp&nbsp&nbsp|-'.$v[name]) : $v[name]
$fenlei .= "<option value='$v[id]'>$v[name]</option>"
}
$fenlei .= '</select>'
echo $fenlei
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)