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 class='ck' type='radio' value='{$v[0]}' name='ck' />{$v[2]} "; //输出单选按钮,数组中的索引2,也就是用户名,但是它的值是代号
}
?>
</div>

查看一下显示结果:

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

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

(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}' class='sc' /></div>";
}
}
?>

添加节点看下效果:

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" id="name" /></div>    //起个名字,下面保存的写个单击事件有用
<div><input type="button" value="保存" id="save" /></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" id="uid" /></div>
<div>密码:<input type="password" id="pwd" /></div>
<div><input type="button" value="登录" id="btn" /></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 ids='{$ids}'"; //修改towhere的值看已经执行到哪了
$db->Query($sql,0); //执行修改语句 $swhere = "select * from userflow where ids='{$ids}'";
$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 ids='{$ids}'"; //修改是不是已经通过了
  $db->Query($sql,0);
}
header("location:main.php");

因为还没有写发起流程界面,那么先从数据库中添加几条数据看看:

(1)我们先要新建个流程,这是第一个页面,我们就用新建流程

看下结点还有流程名称   来看下数据库中结点的表   

根据这些我们在流程表中自己先添加信息吧,等后来再通过发起流程添加,现在只看下效果

登录审核人员的账号看下:

第一个人是李四:

我们点击通过,继续往下走

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

我们让马七通过审核,再看下王五的界面

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

最后审核人员张三    

看下结果是否会结束:

再看下数据库中towhere中的数值是不是已经结束了:

这个就剩下发起流程的步骤了,可以先看下效果:

(1)发起流程有个链接页面,单击这个,可以链接到发起流程页面

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

这个挺简单的了,后面再更新吧~~~

至此,这个流程管理就结束了~~

php之 常用的 流程管理的更多相关文章

  1. 熊乐:H3 BPM为加速企业流程管理提供源动力

    近日,在北京·金隅喜来登酒店,H3 BPM以"让天下没有难用的流程"为主题,正式发布H3 BPM10.0版本.全新的业务流程管理系统在易用性方面大大提升,并且全面支持Java与.N ...

  2. 从国内流程管理软件市场份额看中国BPM行业发展

    随着互联网+.中国制造2025.工业4.0等国家战略的支持与引导,企业在数字经济时代的信息化表现惊人,越来越多企业认识到,对于企业的发展来说,信息自动化远远还不够,企业的战略.业务和IT之间需保持高度 ...

  3. 制造行业流程管理的“IPO”思维

    流程管理是企业从流程角度出发,关注流程是否增值的一套管理体系.从认识流程.到建立流程.到管理流程.再到优化流程,企业管理人员要去除不增值和低价值的流程,减少员工犯错误的机会,建立一套卓越的流程体系. ...

  4. jquery miniui , 普加甘特图,流程管理

    http://www.miniui.com/docs/quickstart/index.html 普加 甘特图 流程管理 http://www.plusgantt.com/project/demo/P ...

  5. Java学习中,常用的命令管理(Java 学习中的小记录)

    Java学习中,常用的命令管理      作者:王可利(Star·星星) 一.Window中常见的dos命令 在哪里操作dos命令: Win7 ---> 开始  ---->所有程序---& ...

  6. JBPM4入门——4.封装流程管理的工具类(JbpmUtil)

    本博文只是简要对JBPM4进行介绍,如需更详细内容请自行google 链接: JBPM入门系列文章: JBPM4入门——1.jbpm简要介绍 JBPM4入门——2.在eclipse中安装绘制jbpm流 ...

  7. php之 有点复杂的 流程管理

    1.流程管理的用法是什么样的? 2.怎么发起想要的流程? 3.审批的人要是怎么审批通过? 4.流程审核是不是要挨个走过? 一.还是要有数据库的内容的 肯定会有表的,首先就是用户表了,然后就是流程表,用 ...

  8. php流程管理练习

    今天我们做一个流程管理: 1.流程管理的用法是什么样的? 2.怎么发起想要的流程? 3.审批的人要是怎么审批通过? 4.流程审核是不是要挨个走过? 一. 做这个流程管理肯定要有数据库: 二.数据库结束 ...

  9. PHP流程管理,堪比小小程序

    这个流程管理是从用户登录界面开始,然后提交申请,页面逐级审核通过.这个做起来其实挺简单,只是在某些逻辑方面需要 好好考虑一下. 登录页面就不再多说了,如果要存session的话,我们可以建一个假的登录 ...

随机推荐

  1. RHEL 7.6 安装 Oracle 18c RAC

    RHEL 7.6 安装 Oracle 18c RAC 第一部分 安装规划 虚拟环境 VirtualBox 6.0 OS 版本 Red Hat Enterprise Linux Server relea ...

  2. Linux用户管理及用户信息查询

    useradd 创建用户,更改用户信息 1.工作原理流程 使用此命令式,若不加任何参数选项,直接跟用户名,那么系统会首先读取/etc/login.defs(用户定义文件)和/etc/default/u ...

  3. 关于JQ中ready()方法的几种写法总结

    ——习惯贵在坚持,天才在于积累. 好久没写博客的我,似乎是忘记了当初写博客的初衷是要在博客笔记中提升自己的写作能力和积累自己的知识要点. 废话不多说. ready()方法作用: 在页面加载完成后,立即 ...

  4. vue父组件为子组件传值传不过去?vue为数组传值,不能直接用等于的方式,要用循环加push的方式

    父组件为子组件传值不成功,子组件拿不到值,不能直接赋值,要用循环加push的方式赋值.

  5. 【HNOI2013】数列

    题面 题解 设\(\{a_n\}\)为差分数组,可以得到柿子: \[ \begin{aligned} ans &= \sum_{a_1 = 1} ^ m \sum_{a_2 = 1} ^ m ...

  6. RabbitMQ 安装 rabbitmq_delayed_message_exchange插件

    rabbitmq_delayed_message_exchange插件主要是实现延迟队列 一.下载插件 下载地址:http://www.rabbitmq.com/community-plugins.h ...

  7. Kubernetes学习之路(八)之Kubeadm部署集群

    一.环境说明 节点名称 ip地址 部署说明 Pod 网段 Service网段 系统说明 k8s-master 192.168.56.11 docker.kubeadm.kubectl.kubelet ...

  8. LOJ #6089. 小 Y 的背包计数问题

    LOJ #6089. 小 Y 的背包计数问题 神仙题啊orz. 首先把数分成\(<=\sqrt n\)的和\(>\sqrt n\)的两部分. \(>\sqrt n\)的部分因为最多选 ...

  9. 图片轮播,信手拈来(jquery)

    制作图片轮播,可以说是js或者jquery学习者应该掌握的技巧.但惭愧的是本菜之前一直一知半解,这回抽了半天多总结了下分享给大家.虽然标题比较吹牛,但目的是希望大家看了之后制作图片轮播会非常迅速. 首 ...

  10. monkey测试入门1

    Monkey是一款通过命令行来对我们APP进行测试的工具,可以运行在模拟器里或真机上.它向系统发送伪随机的用户事件流,实现对正应用程序进行压力测试. 官方介绍 :https://developer.a ...