表单引擎在应用系统中的位置与作用驰骋BPM驰骋低代码低代码工作流引擎

任务交互层决定工作流成败:驰骋BPM对比三款主流开源引擎 工作流引擎是连接业务流程与信息系统的核心中间件,承担着流程定义、任务调度、状态流转等底层能力。然而,真正决定用户体感的往往是任务交互层——待办列表如何呈现、审批按钮如何响应、已办历史如何追溯。平台型BPM如驰骋BPM,将任务交互层封装为四大菜单与三大处理器,提供开箱即用的完整方案;而Flowable、Camunda、Activiti作为开源流程引擎,仅暴露TaskService等API,需要开发者自行构建交互界面与业务数据关联。从技术价值看,平台型BPM适合快速交付的政企OA项目,开源引擎适合对流程内核深度 阅读详情

表单引擎在应用系统中的位置与作用


一、概述:同一套引擎,四种社会身份

表单的本质是展示数据与采集数据。 这两件事决定了底层逻辑(控件、落库、校验、扩展),却不决定它挂在哪套应用上。

真正拉开差距的是:如何与应用挂在一起。

就像同一个人——在女儿面前是爸爸,在父亲面前是儿子,在妻子面前是丈夫,在岳父面前是女婿——驰骋表单引擎在不同宿主里扮演不同角色:

宿主应用表单角色EntityType(代码)一句话
流程流程表单SingleFrm = 0(库表单)+ 节点绑定流程实例 ≈ 表单数据实例
实体实体表单FrmEntityNoName = 5(主),FrmDict = 2 遗留主数据对象的增删改查壳
单据单据表单FrmBill = 1流水业务单(报销、请假…)
活动活动表单FrmAsk = 4 / AskExam = 6调查、问卷、投票、活动流程

权威枚举在 EnumLib.cs:

    public enum EntityType
    {
        SingleFrm = 0,      // 独立表单(流程库)
        FrmBill = 1,        // 单据
        FrmDict = 2,        // 实体(旧)
        EntityTree = 3,     // 实体树
        FrmAsk = 4,         // 调查问卷 / 活动
        FrmEntityNoName = 5,// No+Name 实体
        AskExam = 6,        // 考卷量表
        // ...
    }

注意:EntityType 说的是业务宿主角色;FrmType(经典/开发者/章节/VSTO)说的是设计器形态。两者正交——请假单可以是「单据 + 经典设计器」,也可以是「流程节点表单 + 经典设计器」。

引擎能力派生角色绑定方式
展示 · 采集流程表单绑节点 · WorkID
展示 · 采集实体表单菜单 · No/Name
展示 · 采集单据表单OID · GenerBill
展示 · 采集活动表单AskFrm · 分享采集

下文按四种场景,统一用「定义 / 描述 / 权限」三节展开。


二、与流程结合 — 流程表单

2.1 定义

表单与流程结合,成为流程表单:一个流程实例对应一套(或一棵)表单数据实例。 数据主键通常对齐 WorkID(也可按节点配置改用 FID / PWorkID 等,见 WF_FrmNode.WhoIsPK)。

库中的独立表单一般是 EntityType = SingleFrm (0),编号常以 Frm_ 开头;节点也可使用系统生成的 ND{NodeID} 节点表单。

2.2 描述:绑到节点上才参与运行

与流程一起工作 = 绑定到节点。

绑法含义配置落点
单表单节点一个节点绑一张表单Node.FormType → 如 RefOneFrmTree;WF_FrmNode 一行
多表单 / 表单树一个节点绑多张表单SheetTree 等;多行 WF_FrmNode
节点缺省表单用节点自带 Fool 表单FoolForm + ND{NodeID}
嵌入 / 高代码SDK、自定义页、实体 TSSelfForm / SDKForm / EntityTS

关系表是 WF_FrmNode(FK_Node + FK_Frm + FrmSln + 启用规则…)。 设计入口:流程设计器 → 节点 → 表单方案(GPE_FrmSln.ts)。 运行入口:/#/WF/MyFlow、MyFlowGener、MyFlowTree、MyView 等。

产品里常用「车厢」比喻:表单是车厢,节点是车头——车厢可以先在库里造好,挂上节点才上路。

2.3 权限控制

节点与表单的读写方案,代码枚举 FrmSln(FrmNode.cs)对应大纲三种模式:

FrmSln产品说法行为
0 Default默认可编辑按节点/表单默认编辑逻辑
1 Readonly只读整表只读;发送校验可跳过只读绑定
2 Self自定义权限按节点+表单+字段覆盖(FrmField 等)

此外还有:

  • FrmEnableRole:这张表单在本节点是否启用(始终 / 有数据 / 表达式 / 按组织角色…)。
  • 字段级方案:节点「表单权限」细配必填、可见、可写。
  • WhoExeIt:节点由谁执行(人/机器/过程)——与字段 ACL 不是同一层,不要混谈。

三、与实体结合 — 实体表单

3.1 定义

实体表单挂在主数据对象上:固定资产、合同台账、人员、项目…… 当前主类型是 EntityType = FrmEntityNoName (5)(No + Name 主键);旧版 FrmDict (2) 仍可见,产品正迁向 NoName。另有 EntityTree (3) 树形实体。

向导原文要点(GPN_NewFrm.FrmEntityNoName):

实体是管理对象……基础管理就是增、删、改、查;还包括流程管理、相关功能、方法管理。

3.2 描述:进菜单,不进节点

要点代码/产品事实
不能绑到流程节点向导明确:实体不能绑节点;单据与独立表单可以
宿主是菜单 / URLSearchEntityNoName、MyEntityNoName、MyDictFrameWork 等
物理主键No(可配生成规则)、Name
状态EntityState:-1 删除 / 0 初始化 / 1 草稿 / 2 编辑 / 3 归档
与流程的另一种关系流程属性 GPE_FlowEntity(独立/多实例/单实例…)描述的是业务实体表与流程实例关系,不是把实体表单挂到 WF_FrmNode

高代码轨道上,任意 EntityNoName + Search / EnOnly / Group,扮演的是同一社会角色(主数据表单),只是配置面在 EnMap 而非 EntityType=5。

创建:GPN_NewFrm → 实体 → 常见前缀 Entity_ → EntityType=5。

3.3 权限控制

层机制
数据权限Frm_DBRole(列表、新建、删除、保存、归档、导入导出、字段可见…),入口在实体设计器的 DBRole 明细
记录状态EntityState 约束可操作动作(归档后通常只读)
设计期 UAC实体类 HisUAC 管谁能进设计菜单

运行时以 DBRole + 记录状态 为主,没有流程节点那套 FrmSln。


四、与单据结合 — 单据表单

4.1 定义

单据表单挂在流水业务上:报销单、请假单、出差申请、出库单…… 类型 EntityType = FrmBill (1),主键 OID(语义接近流程的 WorkID)。 实例头登记在 Frm_GenerBill(单号 BillNo、标题 Title、状态 BillState、发起人 Starter…)。

4.2 描述:菜单为主,流程为选配

要点说明
日常入口菜单 → SearchBill / MyBill(FrmID=Bill_*)
可绑流程节点与实体相反;审核可走 BillCheckModel=ByFlowNo
可从实体发起实体方法/集合里批量或单笔拉起单据
系统字段BillNo、Title、BillState、Starter、RDT,以及父单冗余 PWorkID / PFrmID

创建:GPN_NewFrm → 单据 → 前缀 Bill_ → EntityType=1。 Demo 常见如 Bill_JiaoFeiBill。

单据与流程表单的差别,不在「能不能画字段」,而在宿主与生命周期:单据先是一张可独立管理的流水单;需要审批链时,再挂流程或启用单据审核模式。

4.3 权限控制

  1. Frm_DBRole:列表/记录级(相对实体,单据侧常见多一项 提交审核 SubmitCheck)。
  2. BillCheckModel:不审核 / 固定审批人 / 自由·抢办·协作·队列 / SQL·API / 绑定流程(GPE_BillCheckModel.ts)。
  3. 一旦绑了流程节点:该节点上仍可用 WF_FrmNode.FrmSln 控制只读与自定义字段权限;流程引擎管流转,表单引擎管车厢读写。
  4. 事件钩子:FrmBill_CheckStart / CheckOver 等(OverrideFile / ExecEvent)。

五、与活动结合 — 活动表单

5.1 定义(先消歧)

这里的「活动」不是 BPMN 里的 Activity,也不是轨迹表里的 ActionType,而是 CCBill 产品线里的 AskFrm 活动子系统:调查、问卷、投票、活动申报、考卷,以及「流程活动」(AskFlow)。

子类EntityType典型用途
调查 / 问卷(AskBill)FrmAsk = 4信息采集、投票、报名
考卷量表(AskExam)AskExam = 6考试、测评
流程活动(AskFlow)极简流程 + 节点表单订单/审批类活动;菜单 MenuModel=AskFrm

向导标题即「新建活动(调查、问卷、流程活动)」(GPN_NewFrm.FrmAskDesc)。

5.2 描述:流水采集 + 可分享

与单据同构之处:

  • 流水增删改查,实例进 Frm_GenerBill;
  • 字段同样有 BillNo / Title / BillState / Starter;
  • 可以被流程节点绑定,也可从实体侧发起。

与单据不同之处:

  • 面向对外/对内采集(二维码、分享链接、AskFrmUserType / AskFrmDBTime 控制用户类型与可填次数);
  • 菜单与路由走 AskFrm 系:SearchAskFrm、MyAskFrm、FrmAskQRCode、GenerList?EnName=GL_AskBill|…;
  • AskFlow 会生成专用极简流程(常设 IsCanStart=0,不当普通流程目录里的可发起项)。

创建:向导前缀 Ask_,或菜单创建 AskFrm_ → EntityType=4。

5.3 权限控制

层机制
DBRole与实体/单据同一套数据权限框架
填写人约束如列表场景下非创建人只读;单次/多次填写策略
分享边界内外用户、二维码入口、打开记录 OpenFrmAskRec / NewFrmAskRec
绑流程后节点 FrmSln + 流程权限;发送成功可回写活动明细状态(AskFrm 事件)

六、四角色对照(选型速查)

流程表单实体表单单据表单活动表单
EntityType0(库)5(主)14 / 6
实例键WorkID 等NoOIDOID
实例登记流程引擎业务表自身Frm_GenerBillFrm_GenerBill
绑 WF_FrmNode是否是是
主入口MyFlow / MyViewSearchEntityNoNameSearchBill / MyBillSearchAskFrm / 分享
权限主轴FrmSln + 字段方案DBRole + EntityStateDBRole + BillCheckModel(+ 可选 FrmSln)DBRole + 采集策略(+ 可选 FrmSln)
典型例子请假流程各节点页车辆台账、合同台账报销单、缴费单满意度调查、活动报名

口诀:

  1. 要走审批链、跟 WorkID 一一对应 → 流程表单(或单据绑流程)。
  2. 要管一个长期存在的业务对象 → 实体表单。
  3. 要一张可独立列表的流水单 → 单据表单。
  4. 要对外采集、问卷考卷、活动申报 → 活动表单。

设计器(经典/开发者/章节/VSTO)在四种角色上都可以用——先定社会身份,再选造车厢的车间。


七、小结

  1. 表单引擎的底层只有两件事:展示与采集;换宿主,就换角色。
  2. Sys_MapData.EntityType 是角色身份证;FrmType 是皮肤与车间。
  3. 流程靠 WF_FrmNode + FrmSln;实体/单据/活动靠 菜单 + DBRole,单据与活动再叠加审核/采集策略。
  4. 实体不能绑节点;单据、活动、独立表单可以——这是代码里写死的产品边界,不是文案偏好。

附录:代码与文档索引

主题路径
EntityTypeCCFlow/Components/BP.En30/Sys/EnumLib.cs
FrmSln / FrmNodeCCFlow/Components/BP.WF/Template/FrmNode.cs
新建向导(四类说明)Vue3/src/WF/Admin/FrmLogic/GPN_NewFrm.ts
节点表单方案Vue3/src/WF/Admin/AttrNode/FrmSln/GPE_FrmSln.ts
单据 / 实体 / 活动Vue3/src/CCFast/CCBill/FrmBill.ts、FrmEntityNoName/、AskFrm/
单据审核模式Vue3/src/CCFast/CCBill/GPE_BillCheckModel.ts
数据权限Vue3/src/CCFast/CCBill/DBRole/GPN_DBRole.ts
活动菜单Vue3/src/CCFast/GPM/CCMenu/GPN_Menu.ts(AskBill / AskExam / AskFlow)

延伸阅读

  • 《表单三要素:控件、数据与业务逻辑》:车厢里面装什么。
  • 《驰骋五大表单设计器》:用哪种车间造车厢。
  • 《表单引擎三大范式与驰骋双轨实现》:规则写在文件、库表还是实体上。

本文依据当前仓库枚举、FrmNode 与 CCBill 向导静态整理;菜单文案与路由以你部署的版本为准。

驰骋BPM-实体与流程数据处理方式 驰骋 BPM 实体与流程数据处理方式摘要 驰骋 BPM (CCBPM) 提供了五种实体数据与流程的交互模式,通过方法(Method)或集合操作(Collection)挂载到界面,并通过PWorkID/PFlowNo关联实体主键。五种核心模式包括: 新增模式:流程完成后在实体表中新增记录 批处理模式:多行实体数据发起一条流程 修改模式:针对单行实体发起变更流程并回写 多次业务模式:可多次发起独立流程但不回写实体 宿主流程模式:实体与流程双向绑定,同一时刻仅一条在途流程 系统通过DTS(数据同步)配置控制字段回 阅读详情

相关推荐

Windows环境Oracle19C安装与配置全攻略

本文详细介绍了在Windows环境下安装与配置Oracle19C数据库的完整流程,包括环境准备、安装步骤、网络配置、客户端工具设置及常见问题解决方案。特别针对Windows 10和Windows Server 2016及以上版本提供了优化建议,帮助用户高效完成Oracle19C的部署与维护。

weixin_28455801的博客 487

表单引擎三大设计范式:文件、数据库与规则三条路径驰骋BPM驰骋低代码低代码工作流引擎

范式一句话基于文件性能与版式最强,变更与治理最弱——适合稳定、遗留、Office 重度场景基于数据库自助与交付最强,复杂逻辑有天花板——适合流程表单、标准单据、实施型项目基于规则灵活与工程化最强,业务自助最弱——适合平台功能、复杂逻辑、长期演进模块表单实现的三大范式——基于文件、基于数据库、基于规则——是驰骋低代码 BPM 对三十年企业软件实践的技术归纳。它们解决的是同一个问题:让数据可靠地流入业务系统,并以合适的形态呈现给用户;它们代表不同的立场:谁维护表单、变更有多频繁、逻辑有多复杂;它们。

开源驰骋工作流引擎 276

01-嵌入式入门-如何看原理图

最近由于找到的工作是偏于嵌入式方向,因此又重新开始学习已经丢弃两年的知识。新手学习知识感觉有一个通病:喜欢收集各种各样的视频、资料,网盘里收藏一大堆,但是却从没有打开看过,到头来还是个小白,只听说过几个概念,而实际却是不知所云,这就是所谓的"学习综合征"。而我也是其中的一员,最近痛定思痛,就准备根据一套资料沉下心学习下去,不再进入收集资料的大军。...

weixin_34010566的博客 4484

表单引擎三大范式与驰骋双轨实现

驰骋低代码表单三大设计范式解析 摘要: 驰骋低代码团队基于20年工程实践,总结出表单引擎的三大设计范式:基于文件、基于数据库和基于规则。这三种范式各具特点,适用于不同场景: 基于文件的传统表单(HTML/JSP/ASPX) 特点:直接生成页面文件 优势:性能好、排版自由 局限:维护成本高,变更需重新部署 基于数据库的低代码表单(驰骋主推方案) 特点:通过设计器配置元数据 优势:业务人员可自助配置,多端复用 适用:流程审批、业务单据等标准化场景 基于规则的高代码表单(EnMap实体类) 特点:通过代码定义表单

开源驰骋工作流引擎 204

【操作系统】 Operation System 第一章:概述

B站 陈渝老师 清华大学 https://www.bilibili.com/video/av6538245?from=search&seid=436175425155932048 相关资料(源自B站下方评论区) https://www.shiyanlou.com/courses/221 配套上机实验地址 https://b23.tv/av18273642/p1 这个适合跨考和基础薄弱的 h...

iwanderu的博客 4万+

Gitee自动创建PR之——评审模式

一 创建PR的常规操作 本地更新主干(一般为master分支),基于主干新建一个分支并(如Dev分支)切换; 进行新的需求开发; 将这个分支推送到远端; 打开 Gitee ,进入创建 Pull Request 界面; 选定目标分支(及我们需要合并到主干分支的分支,一般即为我们的开发分支); 填写 Title 以及 Description; 点击提交 Pull Request。 二 更快的常见PR的方式— — 评审模式 现在 Gitee.

calm_encode的博客 2997

流程引擎BPM设计之:流程消息机制设计解析驰骋BPM驰骋低代码低代码工作流引擎

事件负责「发生了什么」,消息负责「告诉谁、用什么说、从哪打开」。在事件执行过程中,需要把执行内容与结果,传递给该流程实例上相关人员——这一能力,我们称为流程消息。事件分流程事件与节点事件;消息同样分流程消息与节点消息。二者共用事件时钟(如WorkArrive),但配置独立、职责清晰:事件跑业务,消息做触达。本文说明驰骋 BPM 对「流程消息」的设计思想与主张,重点记录关键设计决策,并以驰骋 BPM(CCFlow / JFlow)为实现对照。流程消息。

开源驰骋工作流引擎 165

KTransformers安装笔记 利用docker安装KTransformers

KTransformers安装笔记 利用docker安装KTransformers

guoqingru0311的博客 1562

驰骋 BPM 平台实体数据流程化处理技术说明书驰骋BPM驰骋低代码低代码工作流引擎

驰骋 BPM(CCBPM)将流程对实体数据的操作抽象为五种配置化模式:新增模式、批处理模式、修改模式、多次业务模式、宿主流程模式。本文档从实体概念出发,说明流程如何对单个实体(一行数据)与实体集合(多行数据)进行增、改、查、绑态等操作;结合前端Vue3/src源码给出实现映射;并从合理性、可操作性、可实践性三方面评估该划分对开发人员的减负效果;文末附通用 BPM 平台的同类处理方式对照。在驰骋 BPM 中,实体是对现实世界事物的数字化建模,例如:车辆、固定资产、员工、供应商等。概念含义代码/存储对应。

开源驰骋工作流引擎 180

ICC2:mem出pin的Off Grid问题

这个命令本意是解决跨制成调用IP时在IP出pin位置加一定的routing blockage,限制绕线在一定范围内只能走直线出pin,用来解决off-grid问题也有很好的效果。在ICC2做先进工艺时会有off-grid的问题,off-grid可以理解为绕线没有在preferred方向track上。测试发现,2022版本以前的ICC2绕线容易有off-grid问题。主要在mem出pin的M2/M3层次上,切换版本绕线能很大程度上解决这个问题。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?

m0_61544122的博客 1630

Siemens SIMATIC软件二次开发:使用C#进行SIMATIC软件二次开发

通过使用OPC-UA通信协议和S7通信库,可以有效地在C#应用程序中与Siemens SIMATIC软件进行数据交换。OPC-UA提供了一个标准化的平台,而S7通信库则提供了直接访问PLC数据的能力。掌握这两种通信方式,将极大地增强在工业自动化领域的二次开发能力。在Siemens SIMATIC软件中,自定义功能块开发是实现二次开发的关键步骤之一。通过C#,可以创建高度定制化的功能块,以满足特定的控制需求。下面,我们将通过一个示例来展示如何使用C#开发一个自定义功能块。OPC-UA通信。

kkchenjj的博客 1415

四大菜单与三大处理器:驰骋 BPM 与 Activiti / Flowable / Camunda 的任务交互层对比驰骋BPM驰骋低代码低代码工作流引擎

一次面向研发与架构同学的技术分享稿,聚焦「用户怎么进入流程、怎么办理、怎么查看」。:本仓库(.NET)、(Java)、(前端):Activiti、Flowable、Camunda(三者同属 BPMN 2.0 执行语义一脉,下文合称「Activiti 系」时会单独指出差异):场景匹配优先,不做「谁全面更好」的笼统结论。

开源驰骋工作流引擎 98

在 FreeStyle SAP UI5 应用里优雅落地 Draft 草稿机制:用 DraftManager 封装 DraftController 的一套实战套路

SAP Fiori应用中,Draft草稿机制是解决业务中断、多人协作和长表单填写等痛点的核心能力。本文提出了一套针对FreeStyle SAP UI5应用的Draft管理方案,通过封装sap.ui.generic.app.transaction.DraftController为DraftManager服务类,将复杂的草稿操作逻辑集中管理。该方案实现了草稿的创建、激活、丢弃等核心功能,使控制器只需调用简单意图式API即可完成操作,同时解决了组件化架构下的上下文切换、统一错误处理等问题。文章还详细介绍了后端Dr

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2751

流程二开的三种模式:前端外挂、后端外挂与事件配置的设计取舍教程驰骋BPM驰骋低代码低代码工作流引擎

对比前端外挂、后端外挂与事件配置三种流程二次开发模式,说明各自的适用边界、叠加顺序与升级成本,并给出按场景与团队结构选型的对照表。

开源驰骋工作流引擎 149

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

同一道请假题:六款 Java 工作流引擎怎么实现、怎么打分、怎么选驰骋BPM驰骋低代码低代码工作流引擎

评估(公开资料最接近的对照物是 Enhydra Shark 一类),并在评分中单独标注。

开源驰骋工作流引擎 439

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

不改内核也能挂业务:工作流引擎的三层挂接模型驰骋BPM驰骋低代码低代码工作流引擎

业务能不能稳稳挂上去——挂在交互层、服务层、还是配置层——并且始终不污染内核。三层挂接模型给出的是一把跨产品、跨语言L1守人机边界L2守系统真相L3释放实施生产力Java 阵营里,Camunda / Flowable / Activiti 把 L2/L3 做到了行业标杆,L1 多依赖外围表单与自建工作台;JFlow 则把三层做成办理页协议与设计器配置的并列能力。

开源驰骋工作流引擎 185

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

请假流程:六款.NET工作流引擎实现方式大对比驰骋BPM驰骋低代码低代码工作流引擎

一份「人人可发起」的简单请假审批(含天数分支、表单附件、反馈申请人):各产品公开文档 / GitHub / 官方站点,以及本工作区 CCFlow 请假相关能力(安装 Demo、AI 流程示例字段如、组织与门户源码):同一把尺子量实现路径;有优势写优势,有短板写短板;;

开源驰骋工作流引擎 217

同一道请假题:六款 Java 工作流引擎实现方式对比驰骋BPM驰骋低代码低代码工作流引擎

评估(公开资料最接近的对照物是 Enhydra Shark 一类),并在评分中单独标注。

开源驰骋工作流引擎 175

【驰骋工作流引擎】功能讲解2——WebApi数据源

登陆人员的信息,比如:@WebUser.No 登陆人员账号,@WebUser.Name 名称,@WebUser.DeptNo 部门编号,@WebUser.OrgNo 组织编号,@Token token。实例:在webApi的字典中返回的结果是 {},就不需要设置该属性,若返回的是 contents:{ } ,那么数据就在contents节点之下,就需要把 contents 设置到该选项。1.每个对执行的接口的返回的格式定义的标准不一样。● 内置参数作用于当前数据源上,在一个数据源上,可以有多个内置参数。

m0_70002141的博客 601

简化模式与专业模式:流程设计器的两种配置路径驰骋BPM驰骋低代码低代码工作流引擎

把流程设计模式与节点表单方案两层分开,说明极简、专业、绑定单表单、绑定多表单四种模式的适用边界与配置顺序。

开源驰骋工作流引擎 205

国际知名 BPM / 工作流厂商有哪些,国产 CCFlow / JFlow 有什么优劣势?

BPM/工作流厂商对比与国产CCFlow/JFlow分析 国际厂商分类 国际BPM厂商分为三类: 企业级智能流程平台(如Pega、Appian):提供端到端业务自动化,适合大型企业,成本高 标准流程编排引擎(如Camunda、Flowable):专注BPMN标准,适合技术团队集成 中国式审批BPM(如CCFlow/JFlow):流程+表单+组织一体化,适合国内政企 国际厂商特点 Pega:案例管理强,适合复杂业务,但成本高 Appian:低代码开发快,适合快速应用构建 Camunda:BPMN标准支持好,适

开源驰骋工作流引擎 844

流程引擎BPM设计之:流程二开的三种模式

本文介绍了流程引擎BPM设计中关于流程二次开发(二开)的三种模式及其应用场景。驰骋BPM主张将业务逻辑与引擎内核分离,通过前端外挂、后端外挂和事件配置三种方式实现流程生命周期的业务扩展。三种模式共用同一套事件语义,可按团队技术能力和业务需求灵活选型:前端外挂适合交互校验,后端外挂侧重强类型事务处理,事件配置则面向低代码快速实施。文章强调引擎稳定性与业务灵活性的平衡,并提供了具体的设计决策和实现对照,为技术选型与项目交付提供规范指导。

开源驰骋工作流引擎 421

国际知名 BPM 厂商与国产 CCFlow/JFlow 的能力边界对比驰骋BPM驰骋低代码低代码工作流引擎

把 Pega、Appian、IBM、Software AG、Camunda、Flowable 与国产 CCFlow/JFlow 放在同一张能力画像表里,先按产品形态分层,再按场景权重看优劣势边界。

开源驰骋工作流引擎 87

Vue3/src 效率优化分析:3000+ 源文件的构建、首屏与运行时瓶颈驰骋BPM驰骋低代码低代码工作流引擎

梳理一个 3000+ 源文件 Vue3 工程的四类效率瓶颈:全量 glob 扫描、首屏重型依赖、运行时请求瀑布与大列表渲染,并给出按 ROI 排序的落地顺序。

开源驰骋工作流引擎 240

六款 .NET 工作流引擎二次开发能力对比:同一维度下的机制差异驰骋BPM驰骋低代码低代码工作流引擎

六款 .NET 工作流引擎的二次开发能力对比。先统一「二开」的定义与六个可核对的能力面,再逐款说明扩展点、配置化路径与升级成本,最后按典型场景给出选型参考。

开源驰骋工作流引擎 92
上一篇: 五大表单设计器:应用场景与设计特征驰骋BPM驰骋低代码低代码工作流引擎
下一篇: 表单元素的分类与实现:主表、从表、附件与扩展控件驰骋BPM驰骋低代码低代码工作流引擎
驰骋低代码、工作流、表单引擎
博客等级 码龄18年 501粉丝 506原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

驰骋低代码、工作流、表单引擎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值