馳騁開源的.net工作流,工作流程管理系統
          馳騁工作流,好用看的見http://ccflow.org. 簡單來自背后的力量.
          posts - 40,comments - 10,trackbacks - 0

          遞歸在算法在工作流程引擎中的應用

          遞歸做為一種算法在程序設計語言中廣泛應用.是指函數/過程/子程序在運行過程中直接或間接調用自身而產生的重入現象.遞歸是計算機科學的一個重要概念,遞歸的方法是程序設計中有效的方法,采用遞歸編寫程序能使程序變得簡潔和清晰.。

          遞歸在工作流程引擎中有廣泛的應用,以以下事例來說明:

          應用一:退回到指定的節點,要把當前節電與退回節點之間的節點數據清空。

          /// <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);

                      }

                  }

           

           

           


          類別:工作流開發 查看評論

          大量的多個行業的流程設計案例,都以操作錄像演示給您。
          馳騁工作流,好用看的見。
          http://ccflow.org   QQ:hiflow@qq.com
          posted on 2011-05-12 10:02 馳騁工作流,工作流程管理系統. 閱讀(284) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 玉林市| 凤阳县| 万源市| 勐海县| 纳雍县| 栖霞市| 奎屯市| 健康| 越西县| 广河县| 安泽县| 内黄县| 香格里拉县| 凌海市| 隆安县| 光山县| 水城县| 沂源县| 分宜县| 赣榆县| 西平县| 呼玛县| 太仆寺旗| 三原县| 昂仁县| 灌南县| 乌拉特前旗| 盐山县| 沐川县| 安平县| 柳江县| 五峰| 鄂尔多斯市| 黄大仙区| 富川| 湄潭县| 宜君县| 杭锦后旗| 固镇县| 大关县| 巴塘县|