ccflow代码

news2024/11/15 9:47:23

ccflow代码

  • 目录
    • 概述
      • 需求:
    • 设计思路
    • 实现思路分析
      • 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.什么是流程版本管理?

我们创建一个流程模版,并运行的一段时间的时候,根据业务的需要,对节点个数或者顺序需要调整,为了保证调整前后的流程数据正常使用,我们需要在现在运行的流程基础上创建一个新流程来替代当前的流程模版,我们叫做流程的版本管理。

流程的版本是以该流程的创建时间点作为版本号。
一个流程有多个版本,但是可以启动的流程只有一个流程模版,我们称为这个为主版本,其他的版本为旧版本的流程模版。
如果旧版本的流程有正在运行的流程,这些流程就会按照旧版本的流程运行下去,旧版本的流程模版不能删除。
新旧版本的流程数据存储在同一张业务表里。

使用方法:
**在实际的操作应用过程中,我们是否启用版本控制要取决于我们对历史的数据是否影响作为标准,ccbpm不建议使用流程版本控制,我们对如下应用场景进行分析。
1种可能是:表单增加字段,对旧的流程新增加的字段是空,或者是默认值,不怎么会影响流程的历史数据查询。
第2中可能是:增加节点,历史的流程在流程轨迹图中可以看到该节点,但是该节点上无数据,也不怎么会影响流程可读性。
表单字段减少,对于历史的版本就可能看不到该字段的数据了,如果数据特别重要,我们可以启用版本管理。

第4种可能是:节点减少,就是说节点被优化掉了,如果不是特别重要,我们建议不要删除节点,把连接线去掉就好了,或者在连接线上设置恒不等的条件。他仅仅对流程图有影响,对历史流程轨迹,没有影响,也不影响大局,不建议启用版本控制。

为了安全,稳定期间慎重使用版本控制,多研究变更了什么对历史数据影响的程度来决定采用那个方案。

流程讲义:

一个bpm系统前端有4个菜单.
每个菜单连接的页面是处理工作页面、处理抄送的页面、查看工作的页面.
每个连接后面都有一个列表,这个列表可以通过CCBMP的API获取,开发者可以DIV自己的风格,展现给用户。
菜单对应的功能页面
发起待办连接到工作处理器上,要处理工作。
在途(已完成),连接到工作查看器上,查看工作进展情况.
操作连接抄送处理器上.

发起: /WF/Start.htm
一个人能否发起的流程列表,是通过API获取的.

Dev2Interface.DB_GenerCanStartFlowsOfDataTable
通过这个API获得一个DataTable/JSON数据对象,通过它可以产生一个发起里列表。
一个流程能被那些人发起,是由开始节点的访问权限来确定的.
它的下一级界面是工作处理器。

待办 /WF/Todolist.htm

是上一个节点的人或者设备,发送给你,需要你处理的工作,就叫待办。
待办也是通过API获得的一个列表,这个API里面包含如何下几个列(属性).
流程标题、工作ID、流程编号、当前节点ID、FID.
字段分别是Title,WorkID,FK_Flow,FK_Node,FID.
通过这四大参数连接到工作处理器,

在途 /WF/Runing.htm
符合在途工作需要如下三个条件。
我经受的,包括我发起的,我审批的。
该流程没有完成。
当前待办没有停留在我的身上。
在途工作中可以处理, 撤销 与 催办 两个操作。
撤销 就是把自己认为发送错误的工作取回到自己待办理处理,从自己处理过的节点从新发送.
催办 就是给停留在当前节点的人员进行催办,催办之后就形成一个消息。

在途的下一级界面,连接到工作查看器上。
还有 打印 ,查看 轨迹图 等操作.

菜单-对应的API:
发起: BP.WF.Dev2Interface.DB_GenerCanStartFlowsOfDataTable()
待办:BP.WF.Dev2Interface.DB_GenerEmpWorksOfDataTable()
在途: BP.WF.Dev2Interface.DB_GenerRuning();

抄送: BP.WF.Dev2Interface.DB_CCList();

功能页面调用方法.
发起流程:/WF/MyFlow.htm?FK_Flow=001
工作待/WF/MyFlow.htm?FK_Flow=001&WorkID=1023&FK_Node=103
工作查看器: /WF/MyView.htm?FK_Flow=001&WorkID=20032

送处理器: /WF/MyCC.htm?FK_Flow=001&WorkID=20032

四大菜单总结
每个系统中都需要这样的四个菜单嵌入到自己的应用系统中。
用api对外提供服务的,4大菜单的API返回的都是datatable数据类型,开发人员可以自己进行封装转化自己的格式。
Ccbpm已经提供了发起、待办、在途、抄送功能文件,分别位于 /WF/Start.htm, /WF/Todolist.htm, /WF/Runing.htm /WF/CC.htm开发人员可以直接调用他们.
实际上ccbpm的功能实现也是自己调用的API,包括发送、退回、撤销、移交、加签。

几个不常用的功能菜单
我的关注:
一个流程如果设置了关注,那他就在当前人的关注列表里,关注的流程,就是特别要关心的流程.

授权待办: 查看别人授权给我的工作,授权有的地方叫代理。
批处理: 需要批量发送、批量审核的工作,叫批处理.
任务池: 多人处理待办共享任务有效,用户可以从共享任务池里取到任务,放入自己的待办处理,也可以把取出来的任务放入任务池,让这件工作的其他人处理。
取回审批: 一件工作还没有到达当前当前节点,从以前的节点取回到当前节点进行审批。
我的草稿: 当一个流程需要启用草稿的时候,该用户启动一个流程,可以保存到草稿列表里。
挂起工作: 实质就是对待办工作进行分类,把一个工作挂起来后,这件工作就不再待办了。

参考资料和推荐阅读

1.https://gitee.com/opencc/JFlow/wikis/%E6%B5%81%E7%A8%8B%E8%AE%B2%E4%B9%89/%E5%B7%A5%E4%BD%9C%E6%B5%81%E5%9F%BA%E7%A1%80/%E8%8F%9C%E5%8D%95%E4%B8%8E%E5%8A%9F%E8%83%BD%E9%A1%B5%E9%9D%A2

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

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

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

相关文章

企业如何利用制造业ERP管理系统做好仓库管理?

仓库管理,对于生产制造型企业来说是重中之重,很多制造企业的大部分”身家“,都在仓库里了。众多的原材料和堆积如山的成品、半成品,往往占用了企业大部分的流动资金。来料是否及时,物料是否齐备,库存是否安…

流程引擎与应用系统分布式部署架构

一、为什么应用系统和流程引擎需要分开部署 有句话讲:存在即合理。在实际的企业应用需求里有如下几种场景,需要把业务系统和流程引擎分开部署。 企业流程治理需求。即整个企业只部署一套流程平台BPM,也叫企业级流程中心BPM、或者跨系统端到…

canal数据同步安装、使用

canal源码仓库:https://github.com/alibaba/canal博主使用的是canal 1.5.5版本 MySQL 5.7.32 JDK:1.8 canal各个版本:https://github.com/alibaba/canal/releasescanal-adapter下载 canal-admin 下载 canal-deployer 下载上传到目标服务器对应目录下解压…

初识ros-Navigation

最近一直在看京天Turtlebot3 waffle pi的导航部分,这篇文章就介绍一下相关内容。导航模块是一个独立完整的模块,内容比较多也很深入。因为笔者没有看过源码,只是一些概念上的了解,做个整理,为后续的源码阅读做准备。本…

苏嵌实训——day16

文章目录一、进程间通信:1.传统通信方式:2. IPC通信方式(第五代操作系统):(1)传统通信之无名管道(2)传统通信方式之有名管道(3)使用有名管道来实现…

Python实现清除文件夹中重复视频

目录一、二进制文件二、摘要算法(MD5)三、shutil模块四、视频清除视频全在一个文件夹里视频在不同的文件夹里一、二进制文件 二进制文件是以文本的二进制形式存储在计算机中。 用户一般不能直接读取它们,需要通过相应的软件才能将其显示出来。 二进制文件一般是可…

jspssm大学生宿舍管理系统-宿管带前端

目录 摘 要 II Abstract III 1 绪论 1 1.1 课题背景 1 1.2 课题研究现状 1 1.3 初步设计方法与实施方案 2 1.4 本文研究内容 2 2 系统开发环境 4 2.1 JSP技术 4 2.2 B/S架构 5 2.3 Eclipse环境配置 5 2.4 MySQL数据库 6 3 系统分析 7 3…

【微服务】Docker容器化

🚩本文已收录至专栏:微服务探索之旅 👍希望您能有所收获 一.引入 (1) 为什么需要Docker 微服务虽然具备各种各样的优势,但服务的拆分的非常多给部署带来了很大的麻烦。 分布式系统中,依赖的组件非常多,不同…

【1】Python基础语法

字面量 字面量:在程序中,被写下来的固定值,称之为字面量。Python中常用的6种数据类型: 字符串(string),又称文本,是由任意数量的字符如中文、英文、各类符号、数字等组成&#xff0…

虚拟化技术学习笔记10

虚拟机镜像管理 学习目标: 能够了解KVM虚拟机支持的镜像格式 能够使用qemu-img实现镜像创建 能够使用qemu-img实现镜像查看 能够使用qemu-img实现镜像格式转换 能够了解后备镜像的作用 能够了解差量镜像的作用 能够基于后备镜像制作差量镜像 能够使用差量镜…

[网鼎杯 2020 朱雀组]Nmap(双解详细分析)

目录 Nmap 相关参数 信息收集 思路 方法一 方法二 nmap常见操作 Nmap 相关参数 -iL 读取文件内容,以文件内容作为搜索目标 -o 输出到文件 -oN 标准保存 -oX XML保存 -oG Grep保存 -oA 保存到所有格式 信息收集 可以对ip进行扫描 思路 方法一 将一句话木马…

【高并发】- 生产级系统搭建 - 3

前言 本章讲解高并发系统动静分离方案设计、热点数据处理、管控等思想。 1. 动静分离方案设计 动静分离实质,将静态页面与动态页面(或者静态数据与动态数据)解耦分离,用不同系统承载对应流量。这样可以提升整个服务的访问性能和可…

MySql性能优化(五)优化细节

优化细节 当使用数据库列进行查询的时候尽量不要使用表达式,把计算结果放到业务层而不是数据层尽量使用主键索引,而不是其他索引,因此主键索引不会触发回表查询使用前缀索引 有的时候需要索引很长的字符串,这会让索引变的大且慢&…

Ethercat系列(1)COE非周期性数据通信

Ethercat主站通过读写邮箱数据SM通道实现非周期性数据通信。邮箱数据定义邮箱数据单元结构邮箱数据头各字段含义如下表非周期性邮箱数据通信EtherCAT协议中非周期性数据通信称为邮箱数据通信,它可以双向进行---主站到从站和从站到主站。它支持全双工,两个…

存储介质还是存储载体,这不是个问题

在档案领域中,“介质”和“载体”到底有什么区别?能不能混用?这个问题曾经困扰了笔者10几年,直到最近才发觉原来根本不是一个问题。我们先来看两句话: 1、磁盘、光盘、固态硬盘等常见数据存储载体的寿命无法满足电子档…

RabbitMQ快速入门和使用

文章目录1. 基础理论1.1. 同步调用与异步调用1.2. RabbitMQ 安装与运行1.2.1. 常见消息模型2. 基本消息队列的应用2.1. 消息发送流程2.2. 消息接收流程3. SpringAMQP的基础理论与应用(想快速应用看这里)3.1. 基础理论3.2. 【案例一】实现HelloWorld中的基础消息队列功能3.3. 【…

Neo4j数据库模糊查询

1、Neo4j单个查询条件模糊查询1.1使用 ~’.模糊匹配对象.’ 进行表示1.1.1 查询节点MATCH(n:Author) WHERE n.name ~.*梦.* RETURN n1.1.2 查询关系MATCH p({title:锆石U-Pb和Lu-Hf同位素研究内蒙乌努格吐山斑岩型铜钼矿岩浆岩特征})-[r:has_illustration]->(i:Illustration…

Python应用开发——制作bin文件

Python应用开发——制作bin文件 目录Python应用开发——制作bin文件前言1 环境搭建2 代码编写与测试结束语前言 什么是bin? bin是二进制文件,其用途依系统或应用而定。一种文件格式binary的缩写。一个后缀名为".bin"的文件,只是表…

无代码配置态势感知分析应用,预判你的预判

森林发生火势灾情时,应急管理中心快速做出部署,实时监测并分析演变趋势大型交通事故发生,应急指挥中对前端人员、车辆的远程调度线路规划实时监测无人机对电站电厂的运维工作公安警务对嫌疑人、嫌疑车辆等目标的跟踪侦查……以上这些&#xf…

Acwing---基础算法(一)

文章目录 快速排序归并排序整数二分浮点数二分一、快速排序 #include<iostream>using namespace std;const int N 1e6 10;int n; int q[N];void quick_sort(int q[], int l, int r) {//此时区间只有一个数或者没有数不需要排序了if (l > r) return;int x q[l], i…