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. Target Audiences在弹出的people picker中不显示Alias列有空的项目

    [客户需求] 当编辑webpart时,Target Audiences在弹出的people picker搜索时候,Alias列有空的项目,客户要求不显示Alias列有空的项目. [分析] 首先这个“D ...

  2. 安卓isEmpty()的注意事项,主要判断NULL

    项目中服务器返回的字符串有可能为NULL或者没有内容,习惯性直接用String.isEmpty() 运行中发现字符串为NULL的时候就会出错,之前有查百度看到过正确的用法,但一直没在意, 就直接加多一 ...

  3. zlib库的编译及使用

    * 打开网址http://zlib.net/ 下载zlib源码, * 解压压缩包,进入目录:C:\Users\Administrator\Desktop\zlib-1.2.11\zlib-1.2.11 ...

  4. linux 虚拟机 磁盘空间压缩

    /usr/bin/vmware-toolbox-cmd disk list /usr/bin/vmware-toolbox-cmd disk shrink / init 0

  5. 2017-2018-1 20155210 《信息安全系统设计基础》 实现mypwd

    2017-2018-1 20155210 <信息安全系统设计基础> 实现mypwd 作业要求: 1.学习pwd命令 2.研究pwd实现需要的系统调用(man -k; grep),写出伪代码 ...

  6. JavaScript总结(三)

    如何执行代码语句? 使用函数,函数是一组可以随时随地运行的语句,它们是JavaScript的核心.函数是由关键字function.函数名加一组参数以及置于括号中要执行的代码声明的.语法如下: Func ...

  7. PostgreSQL统计信息索引页

    磨砺技术珠矶,践行数据之道,追求卓越价值 返回顶级页:PostgreSQL索引页 本页记录所有本人所写的PostgreSQL的统计信息相关文摘和文章的链接: pg_stats:   --------- ...

  8. mfc 控制台程序

     自动生成的C++控制台程序  认识预编译头  认识_tmain 一 .自动生成的控制台程序 二 .认识预编译头 StdAfx 所谓的预编译头就是把一个工程中的某一部分代码,预先编译好放在一个文 ...

  9. 使用 lxml 中的 xpath 高效提取文本与标签属性值

    以下代码在 python 3.5 + jupyter notebook 中运行测试无误! # 我们爬取网页的目的,无非是先定位到DOM树的节点,然后取其文本或属性值 myPage = '''<h ...

  10. Bash shell 常用快捷键

    1,ctrl+c  :强制终止当前命令 2,ctrl+l   :清屏 3,ctrl+a  :光标移动到行首 4,ctrl+e   :光标移动到行尾 5,ctrl+u   :从光标所在位置删除到行首 6 ...