999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

自定義工作流的設計方法

2009-04-29 00:00:00吳平貴
電腦知識與技術 2009年36期

摘要:該文采用數據庫存儲數據方式以實現工作流。并將工作流設計方法運用于NET三層框架。并對其中技術進行了較為詳細的介紹。

關鍵詞:計算機軟件;三層框架;工作流

中圖分類號:TP311.1文獻標識碼:A文章編號:1009-3044(2009)36-10576-03

Based on Three-tier Framework for Workflow Design Method

WU Ping-gui

(Chongqing Zhengda Software Vocational and Technical College, Chongqing 400056, China)

Abstract: In this paper, a database to store to data in order to achieve workflow. And workflow design methods used in the three-tier NET Framework. And in which technology was a more detailed introduction.

Key words: computer software; three-tier framework; workflow

在企業信息化系統開發中,工作流開發技術使用比較普通,工作流設計是企業信息系統開發中的一個重點和難點。目前有全球性的軟件公司專門設計有工作流引擎,如微軟的Workflow,學會了設計自定義工作流,也能加深對軟件公司設計的工作流引擎的理解與運用。

1 典型業務分析

在企業管理系統中,如購物申請與審批、員工加薪申請與審批、加班申請與審批等等,都屬于工作流開發的范疇。如何自定義工作流,要在數據庫中自定義審批的級別。我們假定以學院員工請假流程進行分析。教師請假要經過教研室主任、系主任、副院長、院長、董事長逐級審批。教研室主任為5級主管,系主任為4級主管,副院長為3級主管,院長為2級主官,董事長為1級主管,將各級主管的審批級別用數據表中一列進行存儲。當從5級主管審批轉換為4級主管時,對表執行更新操作,可以將審批記錄存入表中,工作流程圖如圖1。

2 模塊設計

2.1 UML圖設計

界面類FrmMain,主要功能執行請假審批操作。請假審批操作調用事件btnAgree_Click,將數據信息傳入DataAccass類,經其處理后,再將數據信息傳入類SqlHelper中去,執行請假審批操作。如圖2所示。

界面類FrmInsertLeave主要功能實現請假信息插入操作。請假信息插入操作調用事件btnInsertLR_Click,將數據信息傳DataAccass類,經其處理后,再將數據信息傳入類SqlHelper中去,執行請假信息插入操作。如圖3所示。

我們按照三層結構思想進行設計。分別分為數據層、業務層、界面UI層。

2.2 三層框架設計

2.2.1 界面UI設計

2.2.1.1 請假審批界面

當管理人員登陸后,進行如下圖的審批界面,如果有你要審批的請假消息時,便在請假編號列表框中顯示出來,點擊列表框中某一編號,便將相應的信息顯示在對應的文本框中。選擇是否同意準假下拉框,點擊“同意申請”按鈕時,便將相關信息存入數據庫中。同時刷新頁面,請假員工編號數量減去1個。

2.2.1.2 錄入員工請假信息界面

當點擊圖1的按鈕錄入員工請假信息按鈕后,即彈出如圖5所示的對話框。選擇員工姓名、請假類型、請假開始時間和結束時間,單擊插入請假消息按鈕,便能將員工的請假消息插入到后臺的數據庫中去。

2.2.2 數據層設計

在進行企業信息系統的開發中,可以用存儲過程封裝復雜的業務。由三個存儲過程實現了審批工作流的主要功能。

2.2.2.1 確定審批等級

根據請假的天數確定由哪一級別審批。可以創建一個存儲過程,輸入要請假的天數,經過存儲過程計算,獲取由哪一級審批。存儲過程代碼如下:

create proc selConfigLeave

(

@inputDay int--輸入要請假的天數

)

as

begin

declare @diff int

declare @addval int

if(@inputDay<=10)

begin

select @diff=min(abs(@inputDay-Flows_Days)) from dbo.LEAVE_FLOWS_CONFIG

set @addval=@inputDay+@diff

end

else

begin

set @addval=10

end

--根據輸入的天數@addval獲取批的級別Flows_Level

select Flows_Level from dbo.LEAVE_FLOWS_CONFIG where Flows_Days=@addval

end

2.2.2.2 定義請假審批工作流程

假定每次對審批等級進行遞增,由5級主管審批完成后傳遞到4級主管,由4級主管審批完成后傳遞--到3級主管,以此類推。存儲過程updateLC是實現代碼。如下所示:

create proc updateLC

(

--傳入要審批的記錄

@leaveid int,

--能否繼續審批,如果為2,則終止審批

@check_type int

)

AS

begin

--聲明要審批的等級

declare @employee_level int

--給聲明的審批等級賦值

select @employee_level=check_employee_level from dbo.LEAVE_CHECK where leave_bill_id=@leaveid

--如果員工的審批等級不為空值

if(@employee_level>0)

begin

UPDATE dbo.LEAVE_CHECK set

check_employee_level=check_employee_level-1,check_type=@check_type

where check_type=1 and leave_bill_id=@leaveid

end

end

2.2.2.3 處理的批假事宜

員工登陸后,進行權限分配。如果是管理員,可以處理要請假的員工。以下存儲過程的功能是傳入員工編號@empid,顯示自己要處理批假事宜。

create proc GetLeave

(

@empid int

)

as

begin

DECLARE @checkLevel int

select @checkLevel=DutyID from dbo.Employee

where EmpID=@empid

SELECT * FROM dbo.GETLeaveALL WHERE check_employee_level=@checkLevel

end

限于篇幅,其余存儲過程略

2.2.3 業務層設計

2.2.3.1 建立數據庫共用類SqlHelper

建立一個共公類SqlHelper,其主要功能是實現與數據庫交互時方法的重構與封裝,實現對數據庫進行增加、刪除、修改操作。

方法一. ExecuteNonQuery。在不使用事務時對數據庫進行增加、修改、刪除操作,其中,connectionStringg表示連接字符串;cmdType表示命令類型,主要為存儲過程或文本類型;cmdText為T-SQL語句或存儲過程名稱; commandParameters為參數數組。其方法代碼如下:

public static int ExecuteNonQuery(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters){}

方法二. ExecuteNonQuery。與方法一同名,使用ADO.NET事務對數據庫進行增加、修改、刪除操作,其余上一個方法相同。其方法代碼如下:

public static int ExecuteNonQuery(SqlTransaction trans, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters){}

方法三. PrepareCommand。繼續實現方法一與方法二沒有完成的操作。方法參數的含義與上一方法相同。其方法代碼如下:

private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, CommandType cmdType, string cmdText, SqlParameter[] cmdParms) { }

方法四. ExecuteScalar。返回數據庫表中的首行首列,connectionString表示連接字符串, cmdType表示命令類型,取值可能為存儲過程StoredProcedure或文本Text, cmdText表示T-SQL語句或存儲過程名稱,commandParameters表示參數數組。代碼如下:

public static object ExecuteScalar(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters) {}

方法五. ExecuteReader。返回一個閱讀類的對象。方法中的參數connectionString表示連接字符串, cmdType表示命令類型,取值可能為存儲過程StoredProcedure或文本Text,cmdText表示T-SQL語句或存儲過程名稱,commandParameters表示參數數組。代碼如下:

public static SqlDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters){}

2.2.3.2 建立數據庫操作類DataAccass

類DataAccass功能主要負責向數據庫共用類SqlHelper傳送參數,然后再向數據庫傳遞信息,實現對數據庫的增、刪、改、查操作。

3 結束語

該文提供了用數據庫存取數據的方法,實現了工作流,并把這種設計方法運用于NET三層框。文中的業務層對數據庫的增刪改查功能進行了封裝,以便于開發人員對信息系統進行重用和性能拓展。

參考文獻:

[1] 吳平貴.VC#.NET數據庫應用程序設計[M].大連:大連理工大學出版社,2009.

[2] 布科威茨.WF高級程序設計[M].柴曉偉,譯.北京:人民郵電出版社,2009.

[3] 蔡中民,方黨生.SQL SERVER實用教程[M].4版.北京:電子工業出版社,2005.

主站蜘蛛池模板: 午夜福利视频一区| 高清久久精品亚洲日韩Av| 丁香婷婷激情网| 五月婷婷伊人网| 欧美高清国产| 黄色在线不卡| a级毛片一区二区免费视频| 国产日韩欧美精品区性色| 国产精品美女网站| 免费一级毛片完整版在线看| 97色婷婷成人综合在线观看| 国产毛片不卡| 狠狠色噜噜狠狠狠狠色综合久| 亚洲综合18p| 国产成人精品男人的天堂| 在线观看免费AV网| 亚洲嫩模喷白浆| 波多野结衣在线se| 亚洲欧美天堂网| 国产精品三级av及在线观看| 天天色综合4| 国产丝袜91| 69视频国产| 久久伊人久久亚洲综合| 91综合色区亚洲熟妇p| 国产一国产一有一级毛片视频| 亚洲精品久综合蜜| 亚洲第一视频区| 亚洲va视频| 精品久久久久成人码免费动漫| 亚瑟天堂久久一区二区影院| 国产精品成人观看视频国产| 国产美女丝袜高潮| 大香伊人久久| 国产极品美女在线播放 | 国产免费久久精品44| 日韩精品专区免费无码aⅴ | 亚洲熟女偷拍| 1级黄色毛片| 日本精品αv中文字幕| 国产草草影院18成年视频| 亚洲精品视频免费| 日本手机在线视频| 欧美在线导航| 五月综合色婷婷| 久久精品无码专区免费| 农村乱人伦一区二区| 欧美一级色视频| 在线看片国产| 国产微拍精品| 国产精品一区二区国产主播| 992Tv视频国产精品| 亚洲色欲色欲www在线观看| 国产成人你懂的在线观看| 亚洲人成电影在线播放| 伊人激情久久综合中文字幕| 男人的天堂久久精品激情| 成人精品视频一区二区在线| 成年片色大黄全免费网站久久| 欧美成人精品在线| 小说 亚洲 无码 精品| 高清精品美女在线播放| 毛片三级在线观看| 永久成人无码激情视频免费| 色天天综合| 狠狠亚洲婷婷综合色香| 亚洲资源站av无码网址| 日韩在线2020专区| 毛片在线播放a| 国产剧情国内精品原创| 在线永久免费观看的毛片| 国产成本人片免费a∨短片| 色偷偷av男人的天堂不卡| 亚洲成人黄色在线观看| 国产激爽爽爽大片在线观看| 午夜精品久久久久久久无码软件| 国产a网站| 欧美日韩在线国产| www欧美在线观看| 亚洲成人精品在线| 久久婷婷五月综合97色| 精品国产aⅴ一区二区三区|