ccflow 代码

news2024/11/28 16:37:09

java 工作流的开发框架

  • 目录
    • 概述
      • 需求:
    • 设计思路
    • 实现思路分析
      • 1.工作流
  • 参考资料和推荐阅读

Survive by day and develop by night.
talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for change,challenge Survive.
happy for hardess to solve denpendies.

目录

在这里插入图片描述

概述

需求:

设计思路

实现思路分析

1.工作流

工作流开发框架权限设计、用户组、岗位、集团模式应用. java工作流程引擎, .net 工作流引擎,工作流开发框架

1.2: 相关的表结构
– 相关组织-表结构。
SELECT No,Name,ParentNo FROM port_dept; – 部门。
SELECT No,Name,Adminer,AdminerName FROM port_org; – 组织。

– 岗位表.

SELECT No,Name,FK_StationType, OrgNo FROM port_Station; – 岗位。
SELECT No,Name,OrgNo FROM port_stationtype; – 岗位类型。
SELECT FK_Dept,FK_Emp,FK_Station FROM port_deptempstation; – 部门人员岗位。

– 用户组表.
SELECT No,Name,FK_Team FROM port_team; – 用户组。
SELECT No,Name FROM port_teamType; – 用户组类型。
SELECT FK_Teamp,FK_Emp FROM port_teamEmp; – 用户组人员。
–公文字号相关的设计.

SELECT No,Name,FK_Team FROM Doc_DocType; – 公文类型 。FK_Team 是他的分组编号
SELECT No,Name,FK_DocType,FK_Team FROM Doc_Word; – 公文字号。

– 公文表。 必须有的四个字段
SELECT DocWordKey, DocWordName,DocWordYear,DocWordLSH, DowWord FROM Frm_JiTuanXingZhengShouWenJian

1.3: 集团模式下的权限描述如下

  1. 整个集团的部门是一棵大树,只有一个根节点,根节点的parentNo的编号为0。部门的表的主要字段是No,Name,ParentNo,

  2. 组织的概念就是独立岗责体系的子公司或者单位,组织里有一个或则多个管理员。

  3. 集团中admin是超级管理员,admin可以把一个部门节点设置为一个组织。

  4. 一个二级管理员可以管理多个组织,admin也可以有多个组织的管理权限。

  5. 二级管理员或者admin登录后,如果有多个组织系统会让其选择要登录那个组织进行管理

  6. 选择一个组织登录之后,这个管理员,仅仅可以管理本组织的流程,岗位,部门人员信息。如果要管理其他的组织信息,需要切换。

  7. 组织之间的权限是通过OrgNo进行隔离的。

  8. 每个人员登录之后,就有WebUser.No, WebUser.Name, WebUser.FK_Dept, WebUser.OrgNo 等登录信息。加粗样式

  9. 每个流程都有适用范围,在流程属性里可以配置。一个组织的可发起的流程,是由两部分组成的+ 本组织设计的流程+其他组织设计的流程设置了适用范围的流程。

  10. 对于表单的权限规则参考流程的规则,也有适用范围。

  11. 用户组与岗位都是对人员的分组,对人员的权限划分。

  12. 用户组是集团的概念,仅由admin维护。

  13. 岗位则是每个组织都有自己的一套独立的岗责体系,由自己的组织管理员来维护的。

  14. 用户组,用户组类型没有OrgNo, 但是岗位,与岗位类型有。

  15. 用户组类型,岗位类型,都是为了方便管理员操作的方便,没有计算意义。

  16. 一个操作员可以有多个部门,数据存储到Port_DeptEmp,里面FK_Dept,FK_Emp两个列。

一个操作员在一个部门下可以有多个岗位, Port_DeptEmpStation , 列如下:FK_Dept,FK_Emp,FK_Station. 三个外键列存储。

  1. 操作员与用户组的关系存储在 Port_TeamEmp表里, FK_Team,FK_Emp 两个列。

  2. 一个操作员,有三个维度来控制,用户组、岗位、部门。

  3. 为了方便我们管理,我们把岗位或者用户组划分为,抽象的岗位,实际的岗位,抽象的用户组,实际的用户组。

    1. 比如我们把岗位划分为:部门负责人岗位,部门领导岗,信息部主任岗,信息部副主任岗。张三有部门负责人岗位,信息部主任岗。李四有部门领导岗,信息部副主任岗位。这样换分有利于我们在绑定节点岗位的时候容易处理。
  4. 用户组的概念是集团的admin管理员统一管理与维护的,可以下分到每个组织可以使用。在节点访问规则支持绑定用户组功能。

组织结构表的概念:
用于控制用户的权限的表都称为组织结构表.
比如:操作员、部门、岗位。与CCBPM的集成也就是组织结构表的集成,以上表格里的表都是组织结构表。

如果您已经有自己的开发架构,有自己的组织结构体系,要把两个系统的组织结构统一起来.
从理论上来说,我们设计的组织结构与您的组织结构是可以集成在一起的如果您想获得更好的运行效率与效果,您也可以使用同步更新的模式实现与ccbpm的组织结构集成.

不管您如何使用ccbpm组织结构集成是第一步需要做的事情.

 我们提供的是试图模式的集成,如果不想用这样的方式,您可以与ccbpm的表进行同步数据.

ccbpm的组织结构表比较简单.

结构清晰, 在集成之前,必须了解每个表的字段设计的意义.

您可以通过如下SQL来查询出来:
–用户表
SELECT No,Name,Pass,FK_Dept,Tel,Email,PinYin,OrgNo, Idx FROM Port_Emp;
–部门
SELECT No,Name,NameOfPath,ParentNo,OrgNo FROM Port_Dept;
–岗位
SELECT No,Name,FK_StationType,OrgNo FROM Port_Station;
–岗位类型
SELECT No,Name,OrgNo,Idx FROM Port_StationType;
–部门人员对应关系
SELECT MyPK,FK_Emp,FK_Dept FROM Port_DeptEmp;
–部门人员岗位对应关系
SELECT MyPK,FK_Emp,FK_Dept,FK_Station FROM Port_DeptEmpStation

说明:

Idx是一个顺序号,可以为 0.
NameOfPath 部门路径,比如: 驰骋公司\财务部\财务一组
列名区分大小写,不然会导致程序错误。
Port_Emp的 SID,可以设置为空,比如 ‘’ as SID.
数据类型要保持一致.

集成demo.
把CCBPM集成到您的应用系统里,首先要解决的组织结构的集成,然后根据自己的项目确定集成模式。不管什么方式的集成,首先要把组织结构集成在一起。

把CCBPM中的组织表删除了,换成数据结构一样的视图,数据是从被集成的系统数据库映射回来的。这样CCBPM在工作时,仍然不会影响。以一个SQL来说明问题。

把CCBPM中的组织表删除了,换成数据结构一样的视图,数据是从被集成的系统数据库映射回来的。这样CCBPM在工作时,仍然不会影响。以一个SQL来说明问题。

组织结构的约定:
部门树必须有一个根节点,并且该根节点的ParentNo= 0。
人员表Port_Emp里必须有一个 admin的帐号做为超级用户,并且该帐号的部门为根节点。
如果系统使用到了外部用户流程,就需要增加一个Guest帐号在Port_Emp表里。
如果系统用到了外部用户必须有一个Guest帐号在Port_Emp表里。

集成过程常见的问题:
在运行的过程中出现 alert table xxxx的错误,就是字段不匹配造成的。
集成后您的系统就是一个视图,系统如果有增加列的sql执行,就修改视图增加这一列。
如果您在人员表里没有 Idx, Tel 列可以使用 SELECT ‘’ AS Tel, 0 AS Idx 来虚构出来相关的列。
如果在您的系统里没有岗位类型这个表,就可以不用集成岗位类型。
varchar类型的字段不能有null值,比如: null as OrgNo 是不对的, ‘’ as OrgNo 是可以的.
客户自己的系统没有岗位这个属性,如果不集成岗位表以及部门岗位人员对应表,会有什么影响吗?
RE: 这里的岗位就是您系统的角色,如果没有就会有很多的限制.
7.人员表的Pass字段我们系统里面是加密存储的,驰骋里面是明文存储的123。不管我们自己的系统密码改成什么样,这个固定设置为123就可以吗。
RE: 密码不影响,登录时您来判断的,您判断后,直接调用登录接口,传入账号就好。
8.人员表的SID,PinYin等字段是否有用?客户系统中没有该字段
RE: 组织结构视图中必须有这个字段,可以为空. 没有PinYi, 就不能检索。

参考资料和推荐阅读

  1. 暂无
    2.https://gitee.com/opencc/JFlow/wikis/pages/preview?sort_id=3557782&doc_id=31094
    3.https://gitee.com/opencc/JFlow/wikis/%E4%BD%BF%E7%94%A8%E8%80%85%E5%BF%85%E7%9C%8B

欢迎阅读,各位老铁,如果对你有帮助,点个赞加个关注呗!~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/180148.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

十大常见排序算法(java编写)

日升时奋斗,日落时自省 目录 1、插入排序 2、希尔排序 3、选择排序 4、堆排序 5、冒泡排序 6、快速排序 6.1、Hoare法找基准值 6.2、挖坑法找基准值 6.3、快慢指针找中间值 6.4、优化 6.5、非递归排序 7、归并排序 7.1、递归实现 7.2、非递归实现 7.…

车载通信协议-列车实时数据协议(TRDP)

TCNOPEN是一个铁路行业相关的合作伙伴创建的开源的倡议,其目的是建立一些新的或即将出台的铁路标准的关键部分,通常以TCN命名。TCN(列车通信网络)是IEC(国际电工委员会)第43工作组制定的一系列国际标准&…

C++学习/温习:新型源码学编程(一)

写在前面 本文约15页,如觉得文章过长请通过左侧边栏或知识点概览目录浏览食用面向初学者撰写专栏,个人原创的学习C/C笔记(干货)编程练习所作源代码输出内容为中文,便于理解如有错误之处请各位读者指正请读者评论回复、…

Go语言基础突破(一)——基础语法快速上手

文章目录一、本次学习重点内容:二、详细知识点介绍:1、什么是Go语言特点:2、为什么字节跳动全面使用go语言:3、开发环境——安装Golang:4、推荐编辑器:VScode、Goland5、基础语法1、HolleWorld2、基础语法——变量声明…

Ubuntu 玩机笔记

键盘Fn无法切换功能键与多媒体键 终端输入: echo 2 | sudo tee /sys/module/hid_apple/parameters/fnmode然后再长按 FnXL 约四秒即可成功使用Fn切换功能键与多媒体键。 永久生效 以上方法只是输入命令后生效,想要永久生效,可以进行如下操…

深度学习-吴恩达(C5)训练词向量

2.1 词汇表征 上周我们学习了RNN、GRU单元和LSTM单元。本周你会看到我们如何把这些知识用到NLP上,用于自然语言处理,深度学习已经给这一领域带来了革命性的变革。其中一个很关键的概念就是词嵌入(word embeddings),这…

手机提供GMS支持(适用安卓和鸿蒙系统)

手机提供GMS支持 - 适用安卓和鸿蒙系统前言方式1:安装GMS套件(不推荐)方式2:安装OurPlay(推荐)方式3:安装Gspace(推荐)前言 本文提供多种为手机(安卓和鸿蒙系…

数据库系统概论①——数据库系统基本概念

文章目录1、数据库的相关术语1.1 数据(Data)1.2 数据库(Database,简称DB)1.2.1 数据库的定义:数据库是长期储存在计算机内、有组织的、可共享的数据集合。1.2.2 数据库的特征1.3 数据库管理系统(DBMS)1.3.1 DBMS的主要功能1.4 数据库系统&…

自己动手写一个操作系统——MBR(4)_调试_elf_bin

文章目录前言elf 文件指定代码入口地址添加调试信息代码检验调试小结前言 通过 GDB 我们可以跟踪程序的执行, 并且能够看到寄存器的状态, 但是,上面这种调试方式,没有和代码对应起来,以致于我们无法直观地知道 CP…

CodeSYS之一EtherNET驱动禾川电机

硬件:HCFA Q0-1100系列CPU X3EB 驱动器, SV-X2MHO40A伺服电机,24V开关电源。 硬件连接: 电机三相线和编码器线接X3EB驱动器,24V电源接X3EB驱动器,驱动器IN网口接 CPUPort2,CPU接24V电源,Port1 接电脑。 这部分有问题可以直接进禾川官网 一、驱动器调试 接好先后,按驱动…

边缘检测、Padding、stride、三维卷积

目录1.边缘检测(edge detection)当我们做物体识别的时候,一般神经网络的前几层会进行边缘检测,然后检测到物体的一部分,最后检测到整个物体。边缘检测例子:垂直边缘检测器:中间的一个3x3的矩阵,我们称之为过…

力扣sql简单篇练习(六)

力扣sql简单篇练习(六) 1 变更性别 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 # set子句中也是可以使用if函数的 UPDATE Salary SET sexif(sexf,m,f)1.3 运行截图 2 销售员 2.1 题目内容 2.1.1 基本题目信息1 2.1.2 基本题目信息2 2.1.3 示例…

代码随想录--二叉树章节总结 Part I

代码随想录–二叉树章节总结 Part I 1.Leetcode144 前序遍历二叉树 给你二叉树的根节点 root &#xff0c;返回它节点值的 前序 遍历 解题思路1&#xff1a;使用递归解决。 public List<Integer> preorderTraversal(TreeNode root) {ArrayList<Integer> list …

c中对宏的理解(面试题)

1、gcc的编译过程&#xff1a;预处理、编译、汇编、链接 预处理&#xff1a;宏替换、删除注释、头文件包含、条件编译 -E &#xff08;不会发生报错&#xff09;生成预编译文件 将 01_code.c文件使用 gcc -E 01_code.c -o 01.i生成预编译文件01.i 可以10行的源文件看见生成800…

【c语言进阶】枚举与联合体的基本知识大全

&#x1f680;write in front&#x1f680; &#x1f4dc;所属专栏&#xff1a;c语言学习 &#x1f6f0;️博客主页&#xff1a;睿睿的博客主页 &#x1f6f0;️代码仓库&#xff1a;&#x1f389;VS2022_C语言仓库 &#x1f3a1;您的点赞、关注、收藏、评论&#xff0c;是对我…

1600_Cmake学习笔记_Cmake实践学习

全部学习汇总&#xff1a; GreyZhang/g_cmake: my learning notes for cmake tool. (github.com) 之前考虑过是否要学习Cmake&#xff0c;经过各种对比之后放弃了&#xff0c;我选择了去学习scons。在实际的工作以及学习中scons也的确给了我很大的受益。当时出于各种方面的原因…

PyQt5开发环境搭建 1.1 软件安装

写在前面的话&#xff08;1&#xff09;相对而言&#xff0c;python&#xff0c;PyQt5安装还是比较快的。Qt这个又大又慢。Eric也是需要比较长的时间。&#xff08;2&#xff09;安装失败很正常&#xff0c;多尝试几次&#xff0c;多查查&#xff0c;努力装好软件。安装和配置是…

【Linux】VM与Linux的安装

1.1 VMWare安装 1&#xff09;VMware Workstation Pro安装向导 2&#xff09;VMware Workstation安装的许可协议。 3&#xff09;VMware Workstation安装路径。 4&#xff09;VMware Workstation增强型键盘功能。 5&#xff09;VMware Workstation软件检查更新和帮助完善 6&am…

Linux常见的进程间通信

目录管道pipe匿名管道接口介绍示例代码fifo命名管道接口介绍代码示例匿名管道与命名管道的区别shm共享内存接口介绍相关指令代码示例特点总结信号信号量socket套接字管道 管道是一种较老的&#xff0c;半双工通信方式&#xff0c;即数据只能向一个方向流动&#xff08;即一个进…

力扣 2303. 计算应缴税款总额

题目 给你一个下标从 0 开始的二维整数数组 brackets &#xff0c;其中 brackets[i] [upperi, percenti] &#xff0c;表示第 i 个税级的上限是 upperi &#xff0c;征收的税率为 percenti 。税级按上限 从低到高排序&#xff08;在满足 0 < i < brackets.length 的前提…