• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于非線性關(guān)系的稅務(wù)自發(fā)任務(wù)分發(fā)應(yīng)用的算法分析與Oracle 實(shí)現(xiàn)

      2013-03-20 08:24:54朱愛民
      稅收經(jīng)濟(jì)研究 2013年3期
      關(guān)鍵詞:子句層數(shù)數(shù)據(jù)表

      ◆孫 利 ◆朱愛民

      一、引 言

      稅務(wù)任務(wù)分發(fā)應(yīng)用是工作流的一種,工作流的概念源自企業(yè)的生產(chǎn)經(jīng)營(yíng)管理與辦公自動(dòng)化領(lǐng)域。稅務(wù)任務(wù)分發(fā)應(yīng)用通過(guò)記錄對(duì)稅務(wù)機(jī)關(guān)在稅收征管活動(dòng)中具有上下層級(jí)順序的若干涵蓋多部門、多人員的工作流及工作流變化過(guò)程,監(jiān)督與控制稅務(wù)機(jī)關(guān)的整個(gè)任務(wù)落實(shí)過(guò)程諸如上傳下達(dá)完成等環(huán)節(jié)流程的執(zhí)行時(shí)間、效率與結(jié)果。通過(guò)對(duì)任務(wù)分發(fā)過(guò)程與結(jié)果的信息分析利用,進(jìn)行稅收征管業(yè)務(wù)流程再造,實(shí)現(xiàn)高水平的稅務(wù)信息化建設(shè)。

      二、非線性的稅務(wù)任務(wù)分發(fā)應(yīng)用與一般稅務(wù)任務(wù)應(yīng)用的區(qū)別

      一般稅務(wù)任務(wù)應(yīng)用是按照始于納稅人需求的納服體系建設(shè)要求設(shè)計(jì)的業(yè)務(wù)流程,通常是從納稅人的申請(qǐng)與納服部門的受理開始,中間經(jīng)過(guò)調(diào)查、核實(shí)、報(bào)批、審批等節(jié)點(diǎn),最終回到納服部門反饋納稅人結(jié)果為結(jié)點(diǎn)的過(guò)程。如圖1 所示:

      圖1 一般稅務(wù)任務(wù)應(yīng)用

      圖1 顯示了一般稅務(wù)任務(wù)應(yīng)用中節(jié)點(diǎn)與崗位的關(guān)系。在實(shí)際運(yùn)用中,通過(guò)設(shè)計(jì)不同事項(xiàng)途經(jīng)不同的節(jié)點(diǎn)以及不同的操作人員對(duì)應(yīng)的崗位,實(shí)現(xiàn)從對(duì)納稅人申請(qǐng)的受理開始任務(wù)的傳遞流程。這種業(yè)務(wù)流程實(shí)現(xiàn)的是一種線性關(guān)系,其結(jié)構(gòu)是鏈表式的基本數(shù)據(jù)結(jié)構(gòu),流程按順序訪問(wèn)一組數(shù)據(jù)項(xiàng)的集合,這些數(shù)據(jù)項(xiàng)形成一個(gè)鏈表,每個(gè)元素都含有訪問(wèn)下一個(gè)元素所需的信息。要訪問(wèn)鏈表的信息,只需要引用鏈表的指針和結(jié)構(gòu)體的成員名即可。

      從稅務(wù)機(jī)關(guān)內(nèi)部發(fā)起的自發(fā)任務(wù)分發(fā)應(yīng)用則不同。一項(xiàng)從內(nèi)部發(fā)起的征管任務(wù),從發(fā)起者開始,到最終履行者,任務(wù)逐級(jí)推送,涉及人員逐級(jí)增長(zhǎng),內(nèi)容逐步明晰,其業(yè)務(wù)流程實(shí)現(xiàn)的是非線性關(guān)系,所呈現(xiàn)的樹圖如圖2 所示。

      圖2 稅務(wù)機(jī)關(guān)自發(fā)任務(wù)分發(fā)應(yīng)用的樹圖

      其基本特征有:

      特征1.1 稅務(wù)自發(fā)任務(wù)分發(fā)應(yīng)用是樹的應(yīng)用。

      稅務(wù)自發(fā)任務(wù)分發(fā)應(yīng)用是由n 棵互不相交的樹組成的集合,即森林;每一棵樹是一棵有向樹,每棵樹的每個(gè)節(jié)點(diǎn)有零或多個(gè)子節(jié)點(diǎn),每個(gè)子節(jié)點(diǎn)有且僅有一個(gè)父節(jié)點(diǎn),在樹的根與其他節(jié)點(diǎn)之間、父節(jié)點(diǎn)與子節(jié)點(diǎn)之間有且僅有一條路徑。

      特征1.2 稅務(wù)自發(fā)任務(wù)分發(fā)應(yīng)用是有序樹。

      有一個(gè)結(jié)點(diǎn)的入度為0,其余所有結(jié)點(diǎn)的入度都為l,是一個(gè)有根樹,雖不是自由樹,但作為一個(gè)為每個(gè)子結(jié)節(jié)規(guī)定從左到右次序的有序樹,則在實(shí)際中未必有必要性。

      特征1.3 稅務(wù)自發(fā)任務(wù)分發(fā)應(yīng)用是M 叉樹。

      作為一個(gè)M 叉樹,每一個(gè)節(jié)點(diǎn)的出度小于或等于m,子節(jié)點(diǎn)的數(shù)目并不確定。 從行業(yè)應(yīng)用來(lái)看,稅務(wù)自發(fā)任務(wù)分發(fā)應(yīng)用有以下特征:

      特征2.1 樹的根、層數(shù)、不同層數(shù)的節(jié)點(diǎn)均存在不確定性。

      不同層級(jí)的稅務(wù)機(jī)關(guān)下發(fā)任務(wù)時(shí),其根、層數(shù)與不同層數(shù)的節(jié)點(diǎn)均不確定。不同的任務(wù),也產(chǎn)生同樣的不確定性。以節(jié)點(diǎn)落實(shí)到具體數(shù)據(jù)的不確定性為例:有的任務(wù)是指定數(shù)據(jù)的,例如對(duì)全國(guó)重點(diǎn)稅源納稅人的管理任務(wù),表現(xiàn)為數(shù)據(jù)量固定不變;有的任務(wù)是從一批指定數(shù)據(jù)到另一批指定數(shù)據(jù),如從風(fēng)險(xiǎn)識(shí)別->風(fēng)險(xiǎn)推送->風(fēng)險(xiǎn)應(yīng)對(duì),呈數(shù)據(jù)量衰減趨勢(shì);有的任務(wù)是從文字描述發(fā)起到具體數(shù)據(jù)的落實(shí)過(guò)程,呈數(shù)據(jù)量增長(zhǎng)趨勢(shì)。

      特征2.2 目標(biāo)是實(shí)現(xiàn)以任務(wù)自身為核心的柔性的任務(wù)分發(fā)功能。

      基于特征2.1,稅務(wù)自發(fā)任務(wù)分發(fā)應(yīng)用的目標(biāo)是實(shí)現(xiàn)以任務(wù)自身為核心而非任務(wù)內(nèi)容為核心的、柔性的而非剛性的任務(wù)分發(fā)功能。在核心功能實(shí)現(xiàn)的基礎(chǔ)上,兼顧任務(wù)內(nèi)容所落實(shí)的具體數(shù)據(jù)信息,實(shí)現(xiàn)系統(tǒng)的完整性。

      三、基于實(shí)際稅務(wù)應(yīng)用的表設(shè)計(jì)

      如果從存取類似稅務(wù)任務(wù)分發(fā)這樣的應(yīng)用來(lái)說(shuō),無(wú)疑一些NoSQL 數(shù)據(jù)庫(kù),例如文檔型數(shù)據(jù)庫(kù)是更好的解決方案。NoSQL 數(shù)據(jù)庫(kù)與關(guān)系型數(shù)據(jù)庫(kù)相比,更偏重于數(shù)據(jù)存取和問(wèn)題的解決,而非像關(guān)系型數(shù)據(jù)庫(kù)那樣基于關(guān)系模型、側(cè)重于分析數(shù)據(jù)與數(shù)據(jù)之間的關(guān)系和結(jié)構(gòu)。關(guān)系型數(shù)據(jù)庫(kù)雖然不是唯一的高級(jí)數(shù)據(jù)庫(kù)模型,也不是性能最優(yōu)的模型,但是因?yàn)楣δ芗骖櫍子诶斫夂褪褂?,已成為目前使用最廣泛的主流數(shù)據(jù)庫(kù),包括在稅務(wù)系統(tǒng)的應(yīng)用。本文也以關(guān)系數(shù)據(jù)庫(kù)為例說(shuō)明。

      稅務(wù)自發(fā)任務(wù)分發(fā)應(yīng)用需要的基本信息有:

      1.任務(wù)信息

      任務(wù)有發(fā)起時(shí)間、發(fā)起部門、類型、完成任務(wù)的數(shù)量要求、質(zhì)量要求、時(shí)限要求等信息,因此,需要一個(gè)任務(wù)表(tasks),如表1:

      表1 任務(wù)表

      2.任務(wù)狀態(tài)信息

      在業(yè)務(wù)流程設(shè)計(jì)上,任務(wù)分發(fā)的正常流程包括:生成->下發(fā)->未讀->已讀->(轉(zhuǎn)發(fā))->申請(qǐng)完成->完成,其業(yè)務(wù)邏輯為從任務(wù)制訂為起點(diǎn),把任務(wù)下發(fā)給指定對(duì)象,指定對(duì)象是否閱讀的狀態(tài)用于監(jiān)控接收任務(wù)對(duì)象的工作流。指定對(duì)象收到任務(wù)后,決定是否要轉(zhuǎn)發(fā)任務(wù),對(duì)轉(zhuǎn)發(fā)的任務(wù),原任務(wù)處于轉(zhuǎn)發(fā)狀態(tài),再重新生成新的任務(wù)。接收任務(wù)方完成任務(wù)后,向任務(wù)發(fā)起方提交任務(wù)完成申請(qǐng),由任務(wù)發(fā)起方設(shè)定任務(wù)完成狀態(tài)。

      非正常的業(yè)務(wù)邏輯有申請(qǐng)退回、刪除、凍結(jié)等。

      任務(wù)狀態(tài)表(states)用于保存任務(wù)的狀態(tài),如表2:

      表2 任務(wù)狀態(tài)表

      3.任務(wù)分發(fā)人員信息

      由于稅務(wù)任務(wù)分發(fā)時(shí),常常需要分發(fā)同一任務(wù)給多個(gè)接收人員,因此需要任務(wù)分發(fā)人員信息表(operators)記錄任務(wù)分發(fā)人員的信息,對(duì)下發(fā)人員、接收人員進(jìn)行記錄,如表3:

      表3 任務(wù)分發(fā)信息表

      4.任務(wù)內(nèi)容/附件信息

      在解決了核心問(wèn)題后,通過(guò)任務(wù)內(nèi)容或附件表(attachments)的形式,記錄任務(wù)相關(guān)的內(nèi)容與附件,為精細(xì)化處理任務(wù)保存信息,如表4:

      表4 任務(wù)附件表

      稅務(wù)自發(fā)任務(wù)分發(fā)應(yīng)用的E-R 圖如圖3 所示。

      圖3 表設(shè)計(jì)的E-R 圖

      為便于描述,以上數(shù)據(jù)表設(shè)計(jì)均以單樹為例,未加入總?cè)蝿?wù)號(hào)字段來(lái)標(biāo)識(shí)區(qū)分多樹。

      四、任務(wù)分發(fā)應(yīng)用的算法

      對(duì)以上通過(guò)保存任務(wù)號(hào)+父任務(wù)號(hào)信息的形式實(shí)現(xiàn)的最基本的稅務(wù)任務(wù)分發(fā)應(yīng)用的數(shù)據(jù)表結(jié)構(gòu),我們運(yùn)用的最基本的算法即是任務(wù)的遍歷。通過(guò)任一任務(wù)的節(jié)點(diǎn),系統(tǒng)地處理任務(wù)里的每一節(jié)點(diǎn)。有三種基本的順序來(lái)遍歷節(jié)點(diǎn):

      先序:先訪問(wèn)根節(jié)點(diǎn)或父節(jié)點(diǎn),再訪問(wèn)子節(jié)點(diǎn)。

      中序:通過(guò)父節(jié)點(diǎn)得到所有同層子節(jié)點(diǎn),然后訪問(wèn)子節(jié)點(diǎn)。

      后序:先訪問(wèn)子節(jié)點(diǎn),再訪問(wèn)父節(jié)點(diǎn)直至根節(jié)點(diǎn)。

      通過(guò)遞歸可以實(shí)現(xiàn)以上遍歷方法,如圖4 所示(圖左為先序遍歷,右為后序遍歷):

      圖4 遞歸遍歷圖示(tid/fid 分別為子節(jié)點(diǎn)與父節(jié)點(diǎn))

      在最簡(jiǎn)數(shù)據(jù)表結(jié)構(gòu)的基礎(chǔ)上實(shí)現(xiàn)的遍歷,雖然可以采取三個(gè)遍歷方法,但實(shí)際使用以后序法為主。因數(shù)據(jù)表結(jié)構(gòu)中保存的信息僅有父信息與子信息,要從任一節(jié)點(diǎn)出發(fā),只能跟蹤鏈接逐一從一個(gè)節(jié)點(diǎn)移到上一節(jié)點(diǎn)。從數(shù)據(jù)庫(kù)運(yùn)行來(lái)說(shuō),即每次節(jié)點(diǎn)的移動(dòng)就是對(duì)數(shù)據(jù)庫(kù)的一次檢索,如果一個(gè)任務(wù)有N 個(gè)節(jié)點(diǎn),對(duì)該任務(wù)的一次遍歷訪問(wèn)數(shù)據(jù)庫(kù)也不會(huì)少于N 次。

      因此,我們還可以看到在基本數(shù)據(jù)表結(jié)構(gòu)的基礎(chǔ)上,為解決遍歷效率問(wèn)題而衍生的另外幾種擴(kuò)充數(shù)據(jù)表結(jié)構(gòu),用于實(shí)現(xiàn)任務(wù)分發(fā)應(yīng)用的參考:

      1.加路徑信息

      例如在前面的tasks 表中增加路徑信息字段paths,定義為AA(-BB-CC……)的結(jié)構(gòu),如00-00-00 為根節(jié)點(diǎn)(或00),第一層的左節(jié)點(diǎn)為00-01-00(或00-01),右節(jié)點(diǎn)為00-02-00(或00-02),依次類推,也可不補(bǔ)零。在檢索時(shí),通過(guò)SQL 語(yǔ)句SELECT * FROM tasks WHERE paths LIKE SUBSTR(@path,1,2) ORDER BY paths 在任一節(jié)點(diǎn)可以僅訪問(wèn)數(shù)據(jù)庫(kù)一次即可檢索整棵樹。但其缺點(diǎn)也很明顯,即路徑字段寬度受到層數(shù)和子節(jié)點(diǎn)個(gè)數(shù)的限制,僅適用固定層數(shù)的樹遍歷。

      2.加層數(shù)信息

      通過(guò)增加層數(shù)和根節(jié)點(diǎn)信息,有利于提高中序檢索的效率。如在前面的tasks 表中增加層數(shù)信息字段layer 和根節(jié)點(diǎn)信息字段root,通過(guò)SQL 語(yǔ)句SELECT * FROM tasks WHERE root=@root AND layer=@layer AND father_id=@father_id 在任一節(jié)點(diǎn)訪問(wèn)數(shù)據(jù)庫(kù)可以得到中序遍歷的結(jié)果。其缺點(diǎn)是數(shù)據(jù)冗余嚴(yán)重。

      3.設(shè)置左右代碼信息。

      在tasks 表中增加表示左右信息的字段left 和right,left 數(shù)據(jù)以根節(jié)點(diǎn)為1 開始,從根節(jié)點(diǎn)沿子節(jié)點(diǎn)路徑向下,每個(gè)節(jié)點(diǎn)加1,到樹葉后,再沿子節(jié)點(diǎn)向上,right 數(shù)據(jù)在每個(gè)節(jié)點(diǎn)加1,通過(guò)SQL 語(yǔ)句SELECT * FROM tasks WHERE left>@left AND right<@right 可以得到中序遍歷的檢索結(jié)果。從算法上是一種新穎的設(shè)計(jì),但目前僅適用二叉樹,且不適應(yīng)節(jié)點(diǎn)的刪改變更。

      綜上幾種數(shù)據(jù)表結(jié)構(gòu)設(shè)計(jì),從算法來(lái)看可以獲得不同的遍歷效率,但從實(shí)際運(yùn)用來(lái)看,則是耦合度越高,容錯(cuò)度就越低。

      五、Oracle 實(shí)現(xiàn)舉例

      Oracle 數(shù)據(jù)庫(kù)是關(guān)系型數(shù)據(jù)庫(kù),不能像層次型數(shù)據(jù)庫(kù)那樣存放層次關(guān)系。但Oracle 數(shù)據(jù)庫(kù)提供了強(qiáng)有力的層次查詢(Hierarical Retrival)功能,可以高效地獲得層次關(guān)系信息。以O(shè)racle10g 為例,可以實(shí)現(xiàn)用先序、中序、后序各種方法遍歷樹,其實(shí)現(xiàn)方法為:通過(guò)查詢子句START WITH 確定起始節(jié)點(diǎn)位置;通過(guò)查詢子句CONNECT BY 確定遍歷方向,先序或后序。

      SQL 語(yǔ)句語(yǔ)法為:

      Oracle 提供了一個(gè)用于層次檢索的虛擬列l(wèi)evel,與CONNECT BY 子句共用,通過(guò)level 列可以獲得樹的層數(shù)值。

      檢索的遍歷方向根據(jù)CONNECT BY 后的PRIOR 在哪個(gè)節(jié)點(diǎn)前確定。如在子節(jié)點(diǎn)前,則為先序;如在父節(jié)點(diǎn)前,則為后序。如子句為CONNECT BY PRIOR son_id=father_id 或CONNECT BY father_id=PRIOR son_id 時(shí),則其方向?yàn)橄刃虮闅v,按START WITH 子句指點(diǎn)的節(jié)點(diǎn)按路徑逐一向下遍歷;如子句為CONNECT BY son_id= PRIOR father_id 或CONNECT BY PRIOR father_id=son_id 時(shí),則其方向?yàn)橄刃虮闅v,按START WITH 子句指點(diǎn)的節(jié)點(diǎn)按路徑逐一向上遍歷,但遍歷的范圍僅限于同一父節(jié)點(diǎn)為止。

      例如在表tasks 中,從father_id 為空處(表示根節(jié)點(diǎn))開始進(jìn)行先序檢索:

      檢索結(jié)果如表5:

      表5 檢索結(jié)果

      使用DELETE 語(yǔ)句結(jié)合START WITH 和CONNECT BY 子句,實(shí)現(xiàn)對(duì)指定節(jié)點(diǎn)的子節(jié)點(diǎn)刪除。

      Oracle10g 在層次查詢上的一個(gè)新增功能是引入了CONNECT_BY_ISLEAF 函數(shù),通過(guò)函數(shù)值判斷指定節(jié)點(diǎn)是否為樹的葉子。函數(shù)值為0 時(shí),非葉子;函數(shù)值為1 時(shí),為葉子。

      如按先序檢索tasks 表中father_id=1 開始的子節(jié)點(diǎn)信息,并顯示其是否為葉子:

      Oracle10g 對(duì)層次查詢中可能發(fā)生的遞歸死循環(huán),即互為父子節(jié)點(diǎn)的情況,使用NOCYCLE 關(guān)鍵字進(jìn)行干預(yù),而且可以通過(guò)CONNECT_BY_ISCYCLE 關(guān)鍵字的值查詢?cè)谀膫€(gè)節(jié)點(diǎn)發(fā)生了死循環(huán)。

      六、結(jié)語(yǔ)

      本文分析基于非線性關(guān)系的稅務(wù)機(jī)關(guān)自發(fā)任務(wù)分發(fā)應(yīng)用的算法,并在實(shí)際稅務(wù)應(yīng)用的基礎(chǔ)上,給出了基本的數(shù)據(jù)表設(shè)計(jì),通過(guò)Orcale 實(shí)例,說(shuō)明了應(yīng)用的實(shí)現(xiàn)效果。文章表明了非線性關(guān)系的稅務(wù)機(jī)關(guān)自發(fā)任務(wù)分發(fā)系統(tǒng)的實(shí)現(xiàn)可能性、可靠性與可維護(hù)性,為最終實(shí)現(xiàn)該應(yīng)用提供了堅(jiān)實(shí)的基礎(chǔ)。

      [1][美]塞奇威克.算法Ⅰ-Ⅳ 基礎(chǔ)、數(shù)據(jù)結(jié)構(gòu)、排序和搜索[M].張銘澤等譯.北京:中國(guó)電力出版社,2004.

      [2][美]科曼.算法導(dǎo)論[M].潘金貴等譯.北京:機(jī)械工業(yè)出版社,2006.

      [3]Iggy Fernandez.Beginning Oracle Database 11g Administration[M].USA CA:APRESS,2009.

      猜你喜歡
      子句層數(shù)數(shù)據(jù)表
      命題邏輯中一類擴(kuò)展子句消去方法
      填筑層數(shù)對(duì)土石壩應(yīng)力變形的影響研究
      上海發(fā)布藥品包裝物減量指南
      康復(fù)(2022年31期)2022-03-23 20:39:56
      命題邏輯可滿足性問(wèn)題求解器的新型預(yù)處理子句消去方法
      湖北省新冠肺炎疫情數(shù)據(jù)表
      黨員生活(2020年2期)2020-04-17 09:56:30
      MoS2薄膜電子性質(zhì)隨層數(shù)變化的理論研究
      電子制作(2019年11期)2019-07-04 00:34:50
      基于列控工程數(shù)據(jù)表建立線路拓?fù)潢P(guān)系的研究
      西夏語(yǔ)的副詞子句
      西夏學(xué)(2018年2期)2018-05-15 11:24:42
      命題邏輯的子句集中文字的分類
      住在哪一層
      乌鲁木齐市| 金川县| 海口市| 三亚市| 万载县| 富源县| 太湖县| 常熟市| 孟连| 奉贤区| 泾川县| 阿拉善盟| 当涂县| 东宁县| 靖边县| 莱西市| 吐鲁番市| 莒南县| 密山市| 永川市| 时尚| 道孚县| 肥乡县| 宁明县| 泊头市| 原阳县| 精河县| 芮城县| 仙游县| 安乡县| 紫阳县| 昭苏县| 郎溪县| 松潘县| 望奎县| 余江县| 郴州市| 合山市| 车致| 土默特右旗| 全椒县|