[原创]JWFDv0.96工作流引擎设计-自动运行控制器结构说明

[原创]JWFD工作流引擎设计原理(JWFD v0.94 版本) NULL 博文链接:https://comsci.iteye.com/blog/610102 立即下载

       

           JWFDv0.96---工作流引擎设计

               

                              --自动运行控制器结构说明

 


 

 

注:这篇文章中所使用的“函数”就是指JAVA语言中的方法

 


作者 comsci   2010.12.12   四川。成都

 

 

 

 

总体设计思路

 

 

  通过建立JWFD开源工作流系统自定义的流程拓扑数学模型,并在此模型的基础上面构建一系列的SQL-API原子操作函数,同时结合图形广度优先遍历算法的变异体,构建出一个流程自动运行控制器


 

  用户对一个流程实例的操控均建立在这个自动运行控制器的基础上面,至于客户端,呵呵,各位朋友就自己实现吧,越俎代庖的事情我就不做了,开源项目要避免和商业产品形成竞争,毕竟这个行业的整体发展主要要靠广大的商业软件企业,JWFD和comsci仅仅是一个衬托,呵呵

 

 

 

 

 

实现的技术与方法

 

 

蓝色字体标注的函数均为JWFD自定义的流程基础操作函数,这些函数的详细说明请参考

 

 

JWFDv0.96 工作流系统开发包简易说明.doc

 

JWFDv0.96 工作流引擎设计-数据库结构说明.doc

 

JWFDv0.96 流程XML结构说明.doc

 

 

 

这个算法中使用的原子操作函数,均是JWFD对流程拓扑结构进行数据库建模之后,在这个模型基础上形成的基础操作函数,关于这些函数的详细说明和数据库结构说明请参考JWFD开发API简易说明和JWFD工作流引擎数据库结构说明文档,下载地址 在 http://www.cnblogs.com/comsci/favorite/260690.html


 

 

 

 下面我们就来分析这个运行控制器的结构,并试图划分出几个主要的功能模块,然后对此进行理解和再构造,在这之前,需要先回顾一下JWFDV0.94引擎的DFS自动运行控制器的算法结构,事实上DFS是一个全自动的运行控制器,而SAN是一个半自动的控制器,所谓全自动既指流程在运行过程中的流转过程全部由计算机通过DFS算法来控制,中间不需要人为地干预,而半自动的意思是流程在流转过程中,需要通过节点操作者的触发来推动流程的流转,但是SAN算法却在并行控制和条件会签,单步回退这些功能上面均实现了自动化的处理,所有这些复杂的逻辑判断均不需要人工来处理,所以这里的自动化是指流程的流转的控制是由机器来控制还是由人和机器共同控制,但是要真正做到全自动化流程控制,引擎系统就需要采用人工智能的模型,目前我们的技术水平还没有达到这个程度,但是这是我们努力的方向,争取JWFD能够在1.0版本的时候使用人工智能技术设计流程引擎

 

 

SAN算法的前身是Jwfd v0.94版本的运行控制器 DFS算法,该算法所在的类模块是JWFDv0.94代码包org.jwfd.workflowEngines.GXLFlowControlModule.java  这个DFS算法的结构大体如下,

为方便理解SAN算法,我把DFS算法的结构也写出来

 

 

----------------------------DFS伪码算法------------------------------- 


     for(int i =0  i <  当前节点的邻接点个数){

 

        if (该点是个前驱路由点) {

            if (该点没有被访问过) {

                  设置访问次数加(从递归方法中获得的循环控制变量)

                  返回

              }

            else if( 如果已经访问过,但是访问次数<它的前驱节点总数){

                   设置访问次数加(从递归方法中获得的循环控制变量+1)

                   返回

              }

            else if(总计访问次数=它的前驱节点总数){

               递归进入下一个节点的访问(把大循环体的,循环变量带进去递归方法中)

              }

 

              }

            else if(如果是普通节点){

               设置访问标志

               递归进入下一个节点的访问(把大循环体的,循环变量带进去递归方法中)

              }

              }

       }

 

 ---------------------------------------------------------------------------------------------

 

需要注意的是,这个DFS控制器算法的主要模块均是通过条件判断来划分的,因此这种结构和规则引擎的设计思路有些类似,可以说是规则引擎的简化实现,一个流程引擎的运行控制器可以依赖规则引擎来构建,但是如果朋友们愿意自己动手DIY,那么用最底层的JAVA语言来构建一个运行控制器,将大大有利于今后的长远发展。。。。 


 

DFS算法的模块主要是由节点的属性-是否是汇聚或者普通节点来划分,而SAN算法则是由节点的处理状态来划分的

 

 

SAN基础架构仍然采用图论中的广度优先算法的变异结构,但是这个版本中增加了引擎自动对流程的条件汇聚的判断和处理,增加了自动并行分支和节点单步回退的功能模块,所以这个算法的语句要比DFS算法语句多出一倍,但是整体的逻辑结构基本上还是可以划分为三个主要的状态判断和处理逻辑单元,第一个单元式当前节点的未处理状态,第二个单元是当前节点的正在处理的状态,第三个单元式当前节点的处理完毕的状态,下面的代码解释中,用红色的字体划分了这三个主要的单元部分

 

 

这个运行控制器的整个结构大体如下伪码所表示的,一个FOR循环体内部嵌入三个IF判断体,每个判断中包括若干个对应的处理模块和一个递归模块,其中递归模块是用来推动流程向前流转的动力源,由于这个版本中加入了回退处理和条件汇聚的处理模块,所以判断处理单元的结构相对DFS算法要复杂一些,请对比v0.94的DFS算法结构,这样更加便于读者理解JWFD流程自动运行控制器的设计思路,并由此设计出自己的引擎控制模块

 

 

----------------------------------------------SAN伪码描述----------------------------------------------------- 


 

FOR循环体(循环控制变量为存储节点的链表容量)

 

IF  当前节点尚未处理

    嵌入处理过程

    递归前进  

 

ELSE IF 当前节点处理完毕

    嵌入处理过程

    递归前进

 

ELSE IF 当前节点正在处理    

    嵌入处理过程

    递归前进

 

 

---------------------------------------------------------------------------------------------------

 

   下面是SAN自动控制器代码的说明,如果朋友们懒得看这些代码,可以直接打开JWFDv0.96 for Eclipse的代码,直接运行这个SAN

函数(具体位置在org.jwfd.workflowEngines.Algorithm.TopologyAnalysis.java),只需要按照下面的提示进行操作,就可以简略的体会一下运行一个流程实例的过程

 

 * 1: 使用流程设计器画出流程
 * 2: 将流程图导入到数据库中(默认MYSQL)
 * 3: 使用数据库管理工具查看流程数据是否正确导入
 * 4: 参考数据库设计文档,了解数据库结构
 * 5: 把流程实例名导入下面的方法中
 * 6: 启动流程调试函数action()

 

如果大家需要深入的学习和了解这个运行控制器的结构,那抽空看看代码和说明,相信会有所感悟

 

 SAN算法具体的实现代码如下,每行均带有详细的说明 

 

 ------------------------------------------------算法开始-----------------------------------------------------


 

 public void SAN (java.util.ArrayList ln, String graphid,String prestep) {   

 

 

SAN函数的三个参数分别是:存储当前流程节点的链表ln,当前流程图实例id-graphid, 当前流程节点的前驱节prestep

  

 java.util.ArrayList lln = new java.util.ArrayList() ;   新创建一个流程节点链表存储

if (!ln.isEmpty()) {      

 

 

  这句的含义是判断当前节点变量链表存储器是否为空 ,ln链表数据是从SAN函数中传递过来的,该链表用于存储正在处于待处理的流程节点

 

 

 

      for (int i = 0; i < ln.size(); i++) {   

      这一句是用一个FOR循环作为流程引擎的串行和并行处理的关键控制语句,这个循环贯穿整个运行控制器算法

      控制条件ln.size()中存储的是当前需要处理的流程所有节点,SAN算法是按需读取节点数据,引擎每走一步

      就读取流程图中一组的节点,为什么需要用一个数组来作为控制条件呢?因为流程图下一步中的节点不只一个

      而是会出现单个节点或者多个节点,而多个节点同时作为控制条件的情况是用来处理下一步处理过程中需要面对

      分支并行处理的情况下,这个ln.size()数组中就会出现多个并行的节点,而这些节点需要被客户端同步被处理, 

 

      正因为需要同时同步的被处理,所以客户端在这个时候就会同时弹出几个节点的处理窗口,这同实际情况是一致的

 

 

-----------------------------------------------------------------------------------------------------


下面这个if判断是整个运行控制器的三个关键判断单元的第一个,这个判断和判断体的处理部分是判断当前流程节点是否处于尚未处理的状态,然后根据这个判断来进行一系列的处理


-----------------------------------------------------------------------------------------------------

 

      if (stm.is_notactived_steps(ln.get(i).toString(), graphid)) {  

 

 

这句的含义是判断当前流程节点是否处于尚未处理的状态,以此作为是否进入下一步流程节点操作环节的               依据,这个判断和判断体的处理过程是整个运行控制器算法的第一个关键部分

         

       ftc.set_startup_time(ln.get(i).toString(), graphid);   

这句是时间设置函数,用于设置当前节点的初始操作时间点,该时间参数可以作为引擎系统对流程进行统计的时间控制参数和依据

 

 

       stm.set_active_step(ln.get(i).toString(), graphid);   

这句的含义是将节点设置为正在活动状态,既激活当前节点,使之成为待处理节点     

     

      stm.set_visited_times(ln.get(i).toString(),graphid,stm.get_visited_times(ln.get(i).toString(), graphid) +1);这句的含义是设置节点的被流程引擎访问的次数(取节点表中的访问次数值+1)

         

        

          if (stm.is_actived_steps(ln.get(i).toString(), graphid)) {  

            上面这句用于判断当前节点是否已经被处理

           

            System.out.println(ln.get(i).toString() + "调用客户端");

 

        上面这句是个屏幕显示输出,用于流程调试的时候使用

 

 

 

            this.action_step(ln,ln.get(i).toString(),graphid,prestep,this);  

 

这一句用来调用节点处理界面,用户在该界面中对节点进行操作,该节点对应的后台数据库的状态值就发生变化..action_step()函数是一个SWING的简易流程运行处理界面

           }

 

         }

 


 

----------------------------------------------------------------------------------------------------------------

 

下面这个if判断是整个运行控制器的三个关键判断单元的第二个,这个判断和判断体的处理部分是判断当前流程节点是否处于已经处理完毕的状态,然后根据这个判断来进行一系列的处理

----------------------------------------------------------------------------------------------------------------

 

 

           else if (stm.is_overactived_steps(ln.get(i).toString(), graphid)) { 

  这一句用于判断节点是否已经是处理完成的状态,这个判断和判断体的处理过程是整个运行控制器算法的第二个关键部分

 

    

           if (stm.return_preSteps(graphid, ln.get(i).toString()).size() > 1) {

                      上面这句用于判断当前节点是否是汇聚节点

 

       

            if (join_less(ln.get(i).toString(), graphid)) {     

这里是个重要的汇聚处理过程,判断汇聚点的汇聚次数是否小于已处理的次数,以此作为流程流程到下一节点的依据join_less()函数的结构,请参考JWFD流程运行控制器API说明


 

            if(prestep.equals(ln.get(i).toString())){     

 这句表示这个地方增加个控制条件,如果前驱与当前点一致,那么就意味着引擎对该节点重复访问了,需要进行阻塞控制

               

                 System.out.println(ln.get(i).toString() + "空操作");   

             上面这句是个屏幕显示输出,用于流程调试的时候使用

 

                  这个IF控制体是输出空操作---用于防止汇聚点自循环访问

                    

               }else{


 

        System.out.println(ln.get(i).toString() + "汇聚点再次调用客户端");

    上面这句是个屏幕显示输出,用于流程调试的时候使用


 

        下面这句表示将汇聚点作为当期节点参数送入节点处理界面进行处理

        run_action(ln,ln.get(i).toString(),graphid,prestep,this);       

                }

            }

 


 

---------------------------------------------------------------------------------------------------------------------- 

下面这个if判断是整个运行控制器的三个关键判断单元的第三个,这个判断和判断体的处理部分是判断当前流程节点是否处于正在处理状态,然后根据这个判断来进行一系列的处理

---------------------------------------------------------------------------------------------------------------------- 

        

 

   else  if (stm.is_actived_steps(ln.get(i).toString(), graphid)) {  

判断当前流程节点是否处于正在处理状态,这个判断和判断体的处理过程是整个运行控制器算法的第三个

关键部分is_actived_steps()函数的操作在

org.jwfd.workflowDesigner.UItools.Database.mysql.FlowsSqlControlModule.java类的695行的详细说明

 

                                                                                     

 

        判断当前节点的是否是汇聚节点

        if (stm.return_preSteps(graphid, ln.get(i).toString()).size() > 1) {  

        

        如果汇聚的次数和处理的次数相等,那么执行一次空处理                    

           if (join_equals(ln.get(i).toString(), graphid)) {  

           

              System.out.println("空控制体");

          这句是屏幕显示输出,用于流程调试的时候使用

 

             }

 

             else if(join_less(ln.get(i).toString(), graphid))    

             如果处理次数少于汇聚次数,则引擎需要再次对流程的汇聚进行处理,然后才能进入递归调用

             {

             System.out.println(ln.get(i).toString() + "汇聚点再次处理");

         上面这句是个屏幕显示输出,用于流程调试的时候使用


 

            run_action(ln,ln.get(i).toString(),graphid,prestep,this);

             这句的意思前面已经介绍过,既是再次调用流程节点处理客户端

 

            }

          }

        }

      }

    }

 

  }

 

 

-------------SAN算法结束------------

 

可以这样认为,这个SAN算法是JWFD流程系统的一个核心部分,正是由于有这个算法的存在,才使得JWFD和其它的流程系统不太一样,JWFD可以轻易的部署到最终用户那里,也就是说JWFD不需要用户进行二次开发就可以直接使用,由于有SAN算法的自动控制机制才使得最终用户完全不需要考虑流程如何流转,仅仅是需要使用设计器设计出一个流程,SAN算法及其附属模块就可以自动控制流程的流转。虽然目前这个算法还不是很完善,但是毕竟为我们开发出自动流程系统提供了一个很好的参考和方向


 

这个SAN算法在处理比较复杂的流程图的时候,还存在明显的缺点,比如说一个流程图的拓扑结构如果比较复杂,那么在控制器遍历和递归的过程中,可能出现访问次序不确定的错误,控制器没有按照流程的既定顺序去访问节点,而是以另外的顺序去访问其它节点,这就会导致流程运行过程中的一系列的问题,这些缺点,仅仅依赖技术手段来处理是不容易处理得很完美的,这些问题需要流程管理系统从前端设计器部分和后台运行控制器的部分一起下手处理,当然如果有朋友在运行过程中遇到什么问题,欢迎和我讨论,我们大家一起来处理这些问题。。。。。。。。。 

 

 

 

 

 

 

 


 


MOS管的体二极管在LLC中的作用 MOSFET是一个三端器件(G、D、S),在N沟道MOSFET的结构中,源极和漏极之间的N型材料中自然形成了一个寄生的PN结,这个PN结就是体二极管(Body Diode),它是不可避免的器件结构。📌 对于N沟MOSFET:体二极管是从漏极 D 到源极 S 的正向导通二极管,方向为 D → S。MOS管的体二极管在LLC中并不是主功率通道,但却是实现软开关(ZVS)和能量过渡的关键“临时路径”。用得好,它是你的朋友;忽略它,电路就可能烧毁。 阅读详情

相关推荐

3D缺陷检测实战:从点云处理到工业质检优化

本文深入探讨了3D缺陷检测在工业质检中的实战应用,详细阐述了从点云处理到深度学习模型部署的完整技术链路。文章通过PCB焊点检测等实际案例,分析了3D视觉相比2D检测在识别深度、形状等缺陷方面的优势,并分享了点云滤波、分割、特征提取以及利用YOLOv5等模型进行高效检测的优化心得与落地挑战。

weixin_28358083的博客 338

JWFD工作流引擎设计--简单矩阵建模(初步讨论)

作者: comsci 发表于 2010-08-18 11:41 原文链接 阅读: 43 评论: 0 JWFD工作流引擎设计--简单矩阵建模(初步讨论) * 暂时忽略工作流状态的问题,仅仅表示工作流的拓扑结构 * * 为什么要搞这样的东东,jwfd v0.96版本中...

chenglan8953的博客 323

5分钟搞定!用Keil MDK将STM32F103C8T6工程无缝迁移到ZET6开发板

本文详细介绍了如何在Keil MDK环境下快速将STM32F103C8T6工程迁移到ZET6开发板,涵盖硬件差异对比、工程配置调整、外设适配及编译排错等关键步骤,帮助开发者5分钟内完成工程移植,大幅提升开发效率。

weixin_30879169的博客 409

[原创]JWFDv0.96工作流引擎设计-数据库结构说明

JWFDv0.96工作流 引擎设计                                                                                                                  ----数据库结构说明                                         注:这篇文章中所使用的“函数”就

comsci的专栏 2593

实测有效!YOLOv8融合EMA注意力机制后,在无人机航拍目标检测中的性能提升对比

本文详细介绍了YOLOv8融合EMA注意力机制在无人机航拍目标检测中的性能提升效果。通过多尺度特征融合和通道-空间双重注意力机制,EMA模块显著提升了小目标检测的准确率,mAP@0.5平均提升4.2%,同时保持推理速度基本不变。文章还提供了模型定制、训练技巧和实际部署优化的全流程指南。

weixin_33704234的博客 392

地震数据可视化必备:5分钟读懂SEGY道头字段全解析(含坐标定位指南)

本文深入解析了SEGY文件格式中道头坐标字段的提取与可视化方法。针对地震数据处理中的常见痛点,详细介绍了sx/sy、gx/gy等关键坐标字段的二进制解析、比例因子应用、单位转换及常见问题解决方案,并提供了实用的Python代码示例,帮助开发者实现从SEGY文件到三维空间可视化的完整流程。

echo99的专栏 1014

[] [原创]JWFDv0.96工作流引擎设计-自动运行控制器结构说明.

            [size=large;]     jwfdv0.96---工作流引擎设计                               [size=small;]--自动运行控制器结构说明[/size][/size]           [size=10.5pt; font-family: '宋体';]实现的技术与方法[/size]        [size=10....

技术总结 136

三维重建Fusion中的TSDF算法通俗描述

看个视频 https://www.youtube.com/watch?v=8M_-lSYqACo 这是mobilefusion的视频,大家先了解一下,看到在三维重建的时候外面有个长方体包围盒了吗? 数据准备: 我们不同角度拍摄的RGB图、深度图和相应的pose.txt。 步骤: 1.建立长方体包围盒 要建立一个长方体包围盒。让所有的三维点都在这个长方体里面。 假设z方向垂直相机。 很明显,x,y方...

qq_30339595的博客 1万+

JWFDv0.96 工作流引擎原子操作简易说明

作者: comsci 发表于 2010-09-07 10:46 原文链接 阅读: 20 评论: 0 JWFDv0.96新增加了若干基本SQL操作,并在这些操作的基础上面新编写了SAN流程运行控制方法,下面我就简单的介绍下这个这些基本SQL的结构 JWFDv0.94引...

chenglan8953的博客 189

# YOLOv11-seg改进系列 | 引入CVPR MetaFormer的C3k2_PoolingFormerCGLU模块,池化Token混合+CGLU门控MLP

本文引入 CVPR 2022 论文(MetaFormer/PoolFormer)提出的 MetaFormer 元架构设计,以Pooling Token 混合器 + ConvolutionalGLU(CGLU)MLP构成,将其封装为,用于替换 YOLOv11-seg 的 C3k2 块。对比维度C3k2(基线)C3k2_PoolingFormerCGLU(本文)参数量(n scale)2.46M≈2.49M9.6≈9.69.7(+1.0%)架构范式单阶段卷积MetaFormer 双阶段。

qq_44224801的博客 848

[RK-Linux] 移植Linux-5.10到RK3399(十)| 配置AP6256模组使能WIFI、BT功能

[RK-Linux] 移植Linux-5.10到RK3399(十)| 配置AP6256模组使能WIFI、BT功能

Systemcall名屋 2984

[原创] JWFDv0.96工作流引擎设计--节点回退算法说明

          JWFDv0.96工作流引擎设计                                                       ----节点回退算法说明注:这篇文章中所使用的“函数”就是指JAVA语言中的方法作者 comsci   2010.10.7   四川。成都算法设计的简要说明JWFD工作流系统在v0.96版本之前并没有实现回退的功能,在v0.96版本中节点单步回退功能才被使用单一算法函数的方式加入到引擎模块中,但是由于在开发过程中,时间比较紧张,我并没有对这个算法进

comsci的专栏 1397

Linux 服务器上部署 OpenClaw完整教程

2. 全局安装 OpenClaw 3. 初始化配置 配置模型提供商 方式一:使用配置命令(推荐) 方式二:直接编辑配置文件 在 部分添加: 配置多个模型提供商 如果你使用 Antigravity 本地代理,可以同时配置多个模型: 配置飞书集成 1. 创建飞书应用 访问 飞书开放平台 创建企业自建应用 记录 App ID 和 App Secret 2. 配置应用权限 在飞书开放平台,为应用添加以下权限:重要: 必须使用 长连接(WebSocket) 模式,不要使用 HTTP 回调!在飞书开放

Maynor的博客 5252

[原创]JWFDv0.96工作流引擎设计--嵌入公式使用和结构说明

        JWFDv0.96工作流引擎设计                                 --嵌入公式使用和结构说明注:这篇文章中所使用的“函数”就是指JAVA语言中的方法作者 comsci   2010.11.18   四川。成都总体设计思路   通过在流程的节点里面嵌入公式(脚本),保存在数据库中节点字段属性中的,然后流程引擎控制器通过执行脚本引擎获得运行公式的结果,然后通过这个运行结果控制流程的走向设计说明:提前计算及其潜在问题    在实际的流程系统工程设计中,我们会遇到这样

comsci的专栏 3420

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

JWFDv0.96开源工作流引擎设计--节点匹配搜索算法设计说明

JWFDv0.96开源工作流引擎设计                        --节点匹配搜索算法设计说明 注:这篇文章中所使用的“函数”就是指JAVA语言中的方法         作者  comsci        四川.成都        最后修改时间    2013.4.1 算法设计说明   (前两年,我曾经公布

comsci的专栏 1421

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

实现工作流自动运行控制器过程中的思考

我们使用过工作流设计器的朋友一定都有这样的经验,流程设计器设计出来的流程图如果用XML来存储,是一个类似层次结构的数据模型,直接对这种数据模型进行处理并不是很方便(但是我也见到很多直接在XML结构上面进行后台引擎处理的工作流系统,所以我这里说描述的方法不一定是最好的),所以我没有直接在流程图XML上面进行数据操作和处理,而是把用XML存储的流程图数据转换成一种简单的链表结构并存储在数据库中,具体的

comsci的专栏 2202

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

[] [原创]JWFDv0.96 工作流系统-引擎原子操作API简易说明

[img]http://dl.iteye.com/upload/attachment/326183/53714d07-dc4a-3f30-87fb-44f6535fe3f5.jpg[/img] jwfdv0.96新增加了若干基本sql操作,并在这些操作的基础上面新编写了san流程运行控制方法,下面我就简单的介绍 下这个这些基本sql的结构 jwfdv0.94引擎的流程运行控制类...

我的超级无敌博客 184

JWFD工作流引擎自动运行控制器的一些改进设计思路(一)

经过前面一段时间的思考,我发现在JWFDv0.96版本中用于流程引擎的自动运行控制器SAN算法存在着一些值得改进的地方,这种改进也许还无法实现我在前面的文章说描述的那种流程自适应控制的机制(http://comsci.iteye.com/blog/537131),但是至少可以让流程在自动运行过程中变得更加灵活和便于控制下面是SAN自动运行控制器的一个伪代码描述,让我们来看看,到底是什么地方可以改进

comsci的专栏 1840

[原创]JWFDv0.96 结构图说明

在介绍JWFD之前,顺便推荐下朋友做的基于.net的流程设计器,有下载 http://www.cnblogs.com/l_dragon/archive/2004/12/28/83082.html 国内著名的WWF专家WXWinter的博客中介绍的微软体系的流程设计器 http://www.cnblogs.com/foundation/archive/2008/06/29/1

comsci的专栏 858

[] JWFD v0.96 工作流系统--嵌入公式使用和结构说明

jwfdv0.96 工作流系统设计 --嵌入公式使用和结构说明 [img]http://dl.iteye.com/upload/attachment/350443/54560a4f-0279-34c5-9994-6c9aef0c74b0.jpg[/img] 注:这篇文...

tianlanlan 186
上一篇: [原创]JWFDv0.96工作流引擎设计--嵌入公式使用和结构说明
下一篇: 工作流底层数据结构与建立拓扑方程组的一些思考
comsci
博客等级 码龄22年 412粉丝 397原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值