设为首页 收藏本站
查看: 807|回复: 0

[经验分享] php之 常用的 流程管理

[复制链接]

尚未签到

发表于 2017-12-29 19:13:53 | 显示全部楼层 |阅读模式
  1.流程管理的用法是什么样的?
  2.怎么发起想要的流程?
  3.审批的人要是怎么审批通过?
  4.流程审核是不是要挨个走过?
  一、要有数据库的内容的
  肯定会有表的,首先就是用户表了,然后就是流程表,用户编写的流程表,还有审核人员的表
         

  二、数据库结束后,就是新建流程的页面,这页面会有审核人员,还有流程的名字还有提交的按钮
  (1)添加节点的人员,这个是要遍历数据库来查看都什么管理人员
  

<div>  
  请选择节点人员:
  <?php
  session_start();   //开启session
  include("DBDA.class.php");   //调用封装好的数据库
  $db = new DBDA();  //造新对象
  $suser = "select * from users";  //查询用户表中的所有值
  $auser = $db->Query($suser);  //执行查询语句
  foreach($auser as $v)
  {

  echo "<input>  }
  ?>
  
</div>
  

  

  查看一下显示结果:

  (2)既然后选择审核人员,那么就是有添加的按钮
  

<input type="button" value="添加节点" />  //起个名字,便于给它添加单击按钮  

  


  (3)对这个按钮添加点击事件
  

$("#insert").click(function(){  var ck = $(".ck");  //找到项
  var uid = "";
  for(var i=0;i<ck.length;i++)
  {
  if(ck.eq(i).prop("checked"))  //单选按钮的选中状态
  {
  uid = ck.eq(i).val();  //单选按钮的值
  }
  }
  $.ajax({
  url:"addjd.php",  //添加节点的处理页面
  data:{uid:uid},  //将单选按钮的值传过去
  type:"POST",  //传值方式
  dataType:"TEXT",  //值的返回状态
  success: function(data){
  window.location.href="liucheng_gaunli.php";  //执行处理页面成功后会刷新页面
  }
  });
  
})
  

  

  (4)添加节点的处理页面
  

<?php  
session_start();  //开启session
  
$uid = $_POST["uid"];  //接收传过来的值
  

  
if(empty($_SESSION["jiedian"]))
  
{
  $attr = array($uid);  //定义一个数组放用户
  $_SESSION["jiedian"] = $attr; //将第一个用户放入数组中
  
}
  
else
  
{
  $attr = $_SESSION["jiedian"]; //数组中有值
  $attr[] = $uid;  //放入数组中值
  $_SESSION["jiedian"] = $attr;   //将值再交给session
  
}
  

  

  (5)在主页面中显示添加的这些节点
  

<?php  
if(empty($_SESSION["jiedian"]))   //如果没有节点值
  
{
  echo "<div>还没有添加节点</div>";  //输出这句话
  
}
  
else
  
{
  $attr = $_SESSION["jiedian"];  //数组中有了值
  foreach($attr as $k=>$v)  //循环遍历,$v只是名字,还有有所以所以用$k
  {
  $sname = "select name from users where uid='{$v}'";  //编写查询语句
  $name = $db->StrQuery($sname);  //执行查询语句
  //输出索引号还有名字,加一个删除按钮吧,可以吧这个节点删除

  echo "<div>{$k}--{$name}--<input type='button' value='删除' sy='{$k}'>  }
  
}
  
?>
  

  

  添加节点看下效果:
  1.还没有添加节点的效果图:  

  2.随便添加几个审核人员:人员已经显示出来了

  (6)这样之后就是对其的删除按钮添加单击事件了
  

$(".sc").click(function(){  var sy = $(this).attr("sy");  //点击这个按钮,选中这个的索引号
  $.ajax({
  url:"shanchu.php",   //删除按钮的处理页面
  data:{sy:sy},  //把索引号传到处理页面
  type:"POST",  //传值方式
  dataType:"TEXT",
  success:function(data){
  window.location.href="liucheng_gaunli.php";  //执行处理页面成功后会刷新页面
  }
  });
  
})
  

  

  (7)删除按钮的处理页面
  

<?php  
session_start();  //开启session
  
$attr = $_SESSION["jiedian"];  //节点的数组
  
$sy = $_POST["sy"];  //接收穿过来的索引号
  

  
unset($attr[$sy]); //删除数据
  
$attr = array_values($attr); //重新索引
  
$_SESSION["jiedian"] = $attr;
  

  

  查看下删除节点的效果
  1.没有删除之前

  2.删除一个节点之后

  (8)节点的操作已经结束之后,那么就是流程的名称了,这个简单,写名称的文本框:重要的就是对这个流程的保存了,那么也要有保存按钮
  

<div>请输入流程名称:<input type="text" /></div>    //起个名字,下面保存的写个单击事件有用  

  

<div><input type="button" value="保存" /></div>  //保存按钮要有单击事件的  

  这样整体的效果图就出来了:  

  (9)最后就是保存按钮的单击事件了
  

$("#save").click(function(){  
  var name = $("#name").val();  //取到文本框的值
  
  $.ajax({
  url:"baocun.php",  //保存的处理页面
  data:{name:name},  //将文本框的值传到处理页面
  type:"POST",  //传值方式
  dataType:"TEXT",
  success: function(data){
  alert("添加成功!");  //执行处理页面成功后会弹出提示框
  }
  
  });
  })
  

  

  (10)保存流程的处理页面
  

<?php  
session_start();  //开启session
  
include("DBDA.class.php");  //调用封装的数据库类
  
$db = new DBDA();  //造新对象
  

  
$name = $_POST["name"];  //接收传过来的值
  
$code = time();  //代号是时间
  

  
$sflow = "insert into flow values('{$code}','{$name}')"; //修改流程表中的值:代号和名字
  
$db->Query($sflow,0);  //执行语句
  

  
$attr = $_SESSION["jiedian"];
  
foreach($attr as $k=>$v)
  
{
  $spath = "insert into flowpath values('','{$code}','{$v}','{$k}')";  //修改流程节点的数值
  $db->Query($spath,0);  //执行语句
  
}
  

  

  看下保存效果:

  看下数据库,内容也保存数据库了

  三、新建流程页面已经结束了,那么就是用户登录页面了,这个页面写了很多遍了,不多说了,直接上代码
  (1)登录的基本显示:都是些基本语句
  

<h1>用户登录</h1>  
<div>账号:<input type="text" /></div>
  
<div>密码:<input type="password" /></div>
  
<div><input type="button" value="登录" /></div>
  

  

  (2)这里登录,我们也用ajax进行登录吧
  

$("#btn").click(function(){  //对登录按钮添加单击事件  
  var uid=$("#uid").val();  //获取用户的值
  
  var pwd=$("#pwd").val();  //获取密码的值
  
  $.ajax({
  url:"logincl.php",  //编写登录的处理页面
  data:{uid:uid,pwd:pwd},  //将用户和密码传到处理页面
  type:"POST",
  dataType:"text",
  success: function(data)
  {
  if(data.trim()=="OK")
  {
  window.location.href="main.php";    //处理页面执行成功后,跳转到主页面
  }
  else
  {
  alert("用户名密码输入错误");  //否则就提示错误
  }
  }
  
  })
  
})
  

  

  (3)看下处理页面的编写
  

<?php  
session_start();  //开启session
  
include("DBDA.class.php");  //调用封装的类
  
$db = new DBDA();  //造新对象
  
//传过来的值
  
$uid = $_POST["uid"];
  
$pwd = $_POST["pwd"];<br>//查询语句
  
$sql = " select pwd from users where uid='{$uid}' and pwd='{$pwd}' ";
  
//执行语句
  
$attr = $db->Query($sql);
  
if(!empty($pwd) && !empty($attr) && $attr[0][0]==$pwd)
  
{
  $_SESSION["uid"] = $uid; //session接收用户值
  echo "OK";
  
}
  
else
  
{
  echo "ON";
  
}
  
?>
  

  

  最后,我们看下最后结果,登录成功就会进入主页,登录失败会提示错误
   

  四、节点用户的审核处理界面了(对于这个审核界面有很多需要注意的地方)
  (1)登录成功界面的显示部分:并不是每个人登录成功界面是一样的,还有就是如果这个人员不参与审核的话,也应该是没有信息的才对
  想要显示的表头,也就是一行:我们可以用表来显示
  

<tr>  <td>流程代号</td>
  <td>发起者</td>
  <td>发起内容</td>
  <td>是否结束</td>
  <td>发起时间</td>
  <td>操作</td>
  
</tr>
  

  

  先看下表头的显示:

  (2)开启一下session这样登录者的信息就会保存下来
  

session_start();  
include("DBDA.class.php");  //会用到数据库,所以可以调用一下数据库的类
  
$db = new DBDA();  //造新对象
  
$uid = "";
  
if(empty($_SESSION["uid"]))  //判断保存的session值是不是为空
  
{
  
  header("location:login.php");  //为空就返回登录页面
  
}
  
else
  
{
  
  $uid = $_SESSION["uid"];  //不为空就输保存一下用户
  
}
  

  

  (3)接下来就是用户这是不是和流程有关系?流程走到哪了(分情况)?还有就是有没有通过
  

//查询登录者参与的所有流程  
$su_flow = "select * from userflow where code in(select code from flowpath where uids='{$uid}')";
  
$au_flow = $db->Query($su_flow);  //执行查询语句
  
foreach($au_flow as $vu_flow)
  
{
  
  $towhere = $vu_flow[6]; //流程走到哪里了
  
  //找到登录者在该流程中的位置
  
  $s_weizhi = "select orders from flowpath where code='{$vu_flow[1]}' and uids='{$uid}'";
  
  $wezhi = $db->StrQuery($s_weizhi); //该人员在流程中的位置
  
  if($towhere>=$wezhi)
  
  {
  
    $caozuo = "";
  
    if($towhere==$wezhi)
  
    {
  //流程正好走到登录者位置
  $caozuo="<a href='tongguo.php?ids={$vu_flow[0]}'>通过</a>"; //get方式传过处理页面
  
    }
  
    else
  
    {
  //流程走过登录者
  $caozuo = "<span style='background-color:green; color:white'>已通过</span>";
  
    }
  
    echo "<tr><td>{$vu_flow[1]}</td><td>{$vu_flow[2]}</td><td>{$vu_flow[3]}</td><td>{$vu_flow[4]}</td><td>{$vu_flow[5]}</td><td>{$caozuo}</td></tr>";
  
  }
  
  else
  {
  
    //流程未走到登录者
  
  }
  
}
  

  

  (4)通过的处理页面
  

<?php  
include("DBDA.class.php");  //调用封装好的数据库类
  
$db = new DBDA();  //造新对象
  
$ids = $_GET["ids"];  //将代号传过来

  
$sql = "update userflow set towhere=towhere+1 where>  
$db->Query($sql,0);  //执行修改语句
  


  
$swhere = "select * from userflow where>  
$attr = $db->Query($swhere);
  

  
$towhere = $attr[0][6]; //走到哪了
  
$code = $attr[0][1]; //流程代号
  
$ssl = "select count(*) from flowpath where code='{$code}'";   //查询总数
  
$pcount = $db->StrQuery($ssl); //该流程节点人员数量
  

  
if($towhere>=$pcount)
  
{

  $sql = "update userflow set isok=true where>  
  $db->Query($sql,0);
  
}
  
header("location:main.php");
  

  

  因为还没有写发起流程界面,那么先从数据库中添加几条数据看看:
  (1)我们先要新建个流程,这是第一个页面,我们就用新建流程
  看下结点还有流程名称   来看下数据库中结点的表   
  根据这些我们在流程表中自己先添加信息吧,等后来再通过发起流程添加,现在只看下效果

  登录审核人员的账号看下:
  第一个人是李四:

  我们点击通过,继续往下走
  第二个人是马七,我们不点通过,看下下一个人员(王五)有没有这个通过的操作:是没有这个操作的

  我们让马七通过审核,再看下王五的界面
  王五的界面就是:就发现有了这个操作,继续下去,我们看下最后这个通过会不会变成1

  最后审核人员张三   
  看下结果是否会结束:
  再看下数据库中towhere中的数值是不是已经结束了:
  这个就剩下发起流程的步骤了,可以先看下效果:
  (1)发起流程有个链接页面,单击这个,可以链接到发起流程页面

  (2)这个及时发起流程的页面了

  这个挺简单的了,后面再更新吧~~~
  至此,这个流程管理就结束了~~

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-429466-1-1.html 上篇帖子: php程序员面试经验 下篇帖子: php实现支付宝授权登录
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表