`

递归在算法在工作流程引擎中的应用

阅读更多

递归在算法在工作流程引擎中的应用

递归做为一种算法在程序设计语言中广泛应用.是指函数/过程/子程序在运行过程中直接或间接调用自身而产生的重入现象.递归是计算机科学的一个重要概念,递归的方法是程序设计中有效的方法,采用递归编写程序能使程序变得简洁和清晰.

递归在工作流程引擎中有广泛的应用,以以下事例来说明:

应用一:退回到指定的节点,要把当前节电与退回节点之间的节点数据清空。

/// <summary>

        /// ÌY¨¦¦?y¢??¨²Ì???Ì?ºyY

        /// </summary>

        /// <param name="nds">Ì?ä?Ì?¨²Ì?¡¥?</param>

        publicvoid DeleteToNodesData(Nodes nds)

        {

            /*aº?À¨¦¤¨²Ì?ä?Ì?¨²Ì?¡¥?*/

            foreach (Node nd in nds)

            {

                Work wk = nd.HisWork;

                wk.OID = this.WorkID;

                if (wk.Delete() == 0)

                {

                    wk.FID = this.WorkID;

                    if (wk.Delete(WorkAttr.FID, this.WorkID) == 0)

                        continue;

                }

 

                /*¦Ì¡Â:°?-¦?y?¨²Ì?ºyY¡ê*/

                DBAccess.RunSQL("DELETE WF_GenerWorkerList WHERE (WorkID=" + this.WorkID + " OR FID=" + this.WorkID + ") AND FK_Node=" + nd.NodeID);

 

                //¦?yy¡êÌ?¤??ºyY¡ê

                DBAccess.RunSQL("DELETE WF_GenerWorkFlow WHERE WorkID NOT IN (SELECT WorkID FROM WF_GenerWorkerList )");

                DBAccess.RunSQL("DELETE WF_GenerFH WHERE FID NOT IN (SELECT FID FROM WF_GenerWorkerList)");

 

                

                DeleteToNodesData(nd.HisToNodes);

            }

        }

 

 

 



应用二:在分合流程过程中,流程结束时,要根据用户的需要判断并杀掉没有完成的进程。

 

/// <summary>

        /// ¨¢º?¢¡Â¨¬

        /// </summary>

        /// <returns></returns>

        publicstring DoFlowOver()

        {

            // ¡§¢¡é¢¡Â¨¬º?¤y¡ê

            GenerWorkFlow gwf = newGenerWorkFlow(this.WorkID);

            Node nd = newNode(gwf.FK_Node);

            string msg = this.BeforeFlowOver();

 

            //¨¨¨?¨¹Ì?Á¨®¢¡Â¨¬¨¢º?¡ê

            WorkerLists wls = newWorkerLists();

            wls.Retrieve(WorkerListAttr.FID, this.WorkID);

            foreach (WorkerList wl in wls)

            {

                WorkFlow wf = newWorkFlow(wl.FK_Flow, wl.WorkID);

                wf.DoFlowOver();

            }

    。。。。。。。。。。。。。。

   }

 

 

 

应用三:根据当前节点的ID,向上追溯一个分流节点。

/// <summary>

        /// ?¨?¨¹Ì?¦?°??Ì?¤?¢¡ÂÌ?

        /// </summary>

        privateNode _GetHisPriFLNode(Nodes nds)

        {

            foreach (Node mynd in nds)

            {

                if (mynd.IsHL)

                    return mynd;

                else

                    return _GetHisPriFLNode(mynd.HisFromNodes);

            }

            returnnull;

        }

        /// <summary>

        /// ¨¹Ì?¦?°??¤?¢¡Â¨²Ì?

        /// </summary>

        publicNode HisPriFLNode

        {

            get

            {

                return _GetHisPriFLNode(this.HisFromNodes);

            }

        }

 

 

 

分享到:
评论

相关推荐

    数据结构中图的遍历(BFS DFS的非递归算法)

    本主题将深入探讨在图中进行遍历的两种非递归算法:广度优先搜索(BFS)和深度优先搜索(DFS)。 **广度优先搜索(BFS)** BFS是一种从源节点开始,沿着图的边缘逐层探索所有相邻节点的算法。它的主要思想是先访问...

    JWFDv0.96开源工作流引擎设计

    6. **数据库结构**:JWFDv0.96的数据库结构对于流程引擎的运行至关重要,它存储了流程实例的状态和历史信息。详细说明可在相关文档中找到。 7. **API文档**:开发者可以参考JWFD开发API简易说明,了解如何使用...

    Bresenham画线算法、Cohen-SutherLand裁剪算法、de Casteljaus算法绘制贝赛尔曲线、扫描线填充算法、椭圆的扫描转换算法之C#实现

    这些算法在计算机图形学中扮演着重要角色,从基本的线段和曲线绘制到复杂的形状填充和转换,都是构建图形用户界面、游戏引擎和视觉效果的基础。在C#中实现这些算法,可以结合.NET框架的优势,提供高性能、易于理解和...

    一种新的分布式云工作流调度算法.pdf

    在工作流分解阶段,算法将复杂的工作流图拆分为多个子工作流,以便在云上并行执行。放置分析阶段的主要工作是确定最适合执行子工作流的引擎位置,它涉及到集群引擎的决策和优化。最后,在工作流组合阶段,这些分散...

    计算机算法基础

    这些算法在实际应用中有着广泛的应用,例如数据库查询、数据分析等。 图算法在解决网络问题中起着关键作用,如最短路径问题(Dijkstra算法、Floyd-Warshall算法)、最小生成树(Prim算法、Kruskal算法)和拓扑排序...

    (王多强)算法基础(清华大学)

    10. **实际应用与案例研究**:课程可能会通过实际问题,如搜索引擎的网页排名、社交网络分析、机器学习中的优化算法等,来展示算法在实际生活中的应用。 总的来说,"(王多强)算法基础(清华大学)"课程会为学习者...

    IDEA 算法要点和难点,实际案例应用,代码实例和解析

    例如,在解决动态规划或递归问题时,这些调试工具可以帮助我们跟踪每个步骤的状态,理解算法的执行流程。 此外,IDEA还拥有丰富的插件库,其中一些针对算法学习的插件如Algorithms Plugin,提供了经典的算法实现和...

    面向分布式业务执行的BPEL流程解析方法.pdf

    通过递归算法,将与服务直接相关的活动划分为基本单元,其他活动按类型归属到这些单元中,形成多个子流程。这些子流程可以由多个分布式引擎执行,从而缓解集中式引擎的压力,提升系统性能。 在介绍分布式业务执行...

    C常用算法程序集

    在IT领域,编程语言是构建软件的基础,而算法则是编程的灵魂。C语言作为一种经典且强大的...通过深入学习和实践其中的代码,不仅可以提升C语言编程技巧,还能加深对算法的理解,从而在实际项目中更好地应用这些知识。

    hello算法!!!!!!!!

    在IT领域,算法是解决问题和执行任务的核心工具。"Hello算法"这个标题和描述虽然简单,但其实可以...在学习过程中,实践是提升的关键,通过编写和调试代码,我们可以更好地理解算法的工作原理,并提升解决问题的能力。

    隔壁老王的算法总结笔记

    9. **字符串匹配算法**:如KMP算法、Boyer-Moore算法,这些算法在文本处理、搜索引擎等领域有广泛应用。 10. **最短路径算法**:如Bellman-Ford算法、A*算法,用于计算图中两点间的最短路径。 此外,笔记可能还会...

    算法设计与分析基础( Anany Levitin第3版)课后答案

    3. **排序与搜索算法**:这是基础算法中最常见的两类,包括冒泡排序、快速排序、二分查找、哈希表等,它们在实际应用中广泛且重要。 4. **图论算法**:图论是算法设计的一个重要分支,包括最短路径算法(如Dijkstra...

    决策树ID3算法实验报告广工(附源码java)

    二、ID3算法流程 1. **初始化**:从根节点开始,选择具有最大信息增益的属性作为当前节点的分裂属性。 2. **递归构建**:根据选定属性的各个取值,生成子节点,对每个子节点递归执行上述步骤,直到所有实例属于同一...

    算法导论第三版

    作者指出,在当今数字化时代,算法已经渗透到各个行业中,如搜索引擎优化、电子商务推荐系统等。算法不仅可以提高解决问题的速度,还能帮助减少资源消耗,从而降低成本并提高整体效率。 #### 三、算法分析与设计 #...

    计算机算法基础PPT学习教案.pptx

    能行性:算法中有待实现的运算都是基本的运算,原理上每种运算都能由人用纸和笔在有限的时间内完成。 3. 输入:每个算法有 0 个或多个输入,这些输入是在算法开始之前给出的量,取自于特定的对象集合——定义域...

    算法大全与相应的课件

    9. **字符串处理算法**:如KMP匹配、Rabin-Karp模式匹配、Manacher's算法等,它们在文本处理和搜索引擎中有重要应用。 10. **计算几何**:如点线段距离计算、多边形碰撞检测等,这些在游戏开发和图形学中常见。 ...

    纯C语言实现如各自排序、链表、栈、队列、各种树以及应用、图算法、字符串匹配算法、回溯、并查集等

    图数据结构在社交网络、物流规划等领域有着广泛应用,掌握这些算法对解决复杂问题非常有帮助。 字符串匹配算法,如KMP、Boyer-Moore和Rabin-Karp,用于在文本中查找子串。这些算法提高了搜索效率,对于文本处理和...

    MIT算法导论

    例如,栈和队列在程序流程控制(如递归和事件驱动编程)中常见;树结构用于表示层次关系,如文件系统或组织结构;图则常用于模拟现实世界的网络关系,如交通网络或社交网络。 其次,书中详细讲解了排序和搜索算法,...

Global site tag (gtag.js) - Google Analytics