欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

實(shí)例演示如何使用RDIFramework.NET框架的工作流組件進(jìn)行業(yè)務(wù)流程的定義—請(qǐng)假申請(qǐng)流程-WinForm

實(shí)例演示如何使用RDIFramework.NET 框架的工作流組件

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:主機(jī)域名、網(wǎng)頁(yè)空間、營(yíng)銷軟件、網(wǎng)站建設(shè)、富平網(wǎng)站維護(hù)、網(wǎng)站推廣。

進(jìn)行業(yè)務(wù)流程的定義—請(qǐng)假申請(qǐng)流程-WinForm

RDIFramework.NET,基于.NET的快速信息化系統(tǒng)開(kāi)發(fā)、整合框架,給用戶和開(kāi)發(fā)者最佳的.Net框架部署方案。

  參考文章:

RDIFramework.NET — 基于.NET的快速信息化系統(tǒng)開(kāi)發(fā)框架 — 系列目錄

RDIFramework.NET ━ .NET快速信息化系統(tǒng)開(kāi)發(fā)框架 ━ 工作流程組件介紹

RDIFramework.NET ━ .NET快速信息化系統(tǒng)開(kāi)發(fā)框架 ━ 工作流程組件Web業(yè)務(wù)平臺(tái)

RDIFramework.NET ━ .NET快速信息化系統(tǒng)開(kāi)發(fā)框架 ━ 工作流程組件WinForm業(yè)務(wù)平臺(tái)

  RDIFramework.NET工作流程組件是以RDIFramework.NET框架為支撐,根據(jù)我們多年的項(xiàng)目經(jīng)驗(yàn)和項(xiàng)目實(shí)踐,結(jié)合國(guó)內(nèi)各大工作流產(chǎn)品的特點(diǎn)研發(fā)的一套流程管理組件。該組件不僅考慮到從零搭建業(yè)務(wù)系統(tǒng),也考慮到與現(xiàn)有業(yè)務(wù)系統(tǒng)的整合。從零搭建系統(tǒng)我們可以使用RDIFramework.NET框架以基礎(chǔ),來(lái)快速搭建業(yè)務(wù)系統(tǒng)。與現(xiàn)有系統(tǒng)的整合,我們的流程引擎提供了豐富的功能接口,供三方業(yè)務(wù)系統(tǒng)調(diào)用,并提供組件的全部源碼方便用戶進(jìn)行整合。RDIFramework.NET工作流程組件采用SOA架構(gòu)模式,流程引擎支持WCF方式訪問(wèn)。支持B/S、C/S系統(tǒng),同時(shí)支持SQLServer、ORACLE等主流數(shù)據(jù)庫(kù)。

實(shí)例演示如何使用RDIFramework.NET 框架的工作流組件進(jìn)行業(yè)務(wù)流程的定義—請(qǐng)假申請(qǐng)流程-WinForm

  RDIFramework.NET━工作流組件主要涵蓋工作流的設(shè)計(jì)與定義、流程實(shí)例的發(fā)起與運(yùn)行、業(yè)務(wù)流程的監(jiān)控與管理、工作流組件與業(yè)務(wù)系統(tǒng)的集成與協(xié)作等內(nèi)容。

  一、請(qǐng)假流程業(yè)務(wù)說(shuō)明

    員工請(qǐng)假流程在企業(yè)各大信息化系統(tǒng)中基本都會(huì)涉及到,本文我將向大家展示使用RDIFramework.NET工作流組件來(lái)自定義員工請(qǐng)假流程。目前的請(qǐng)假業(yè)務(wù)流程要求是這樣的:

    員工請(qǐng)假首先要提交至請(qǐng)假人所在部門(mén)的“部分經(jīng)理”審批,如果請(qǐng)假天數(shù)小于等于3天則“部門(mén)經(jīng)理”有權(quán)直接審批,否則需要提交至“分公司總經(jīng)理”審批。

  二、請(qǐng)假申請(qǐng)流程定義

  請(qǐng)假申請(qǐng)業(yè)務(wù)流程我們已經(jīng)清晰,現(xiàn)在我們使用RDIFramework.NET框架進(jìn)行請(qǐng)假申請(qǐng)的定義。最終提供的請(qǐng)假流程如下圖所示:

實(shí)例演示如何使用RDIFramework.NET 框架的工作流組件進(jìn)行業(yè)務(wù)流程的定義—請(qǐng)假申請(qǐng)流程-WinForm

  三、請(qǐng)假申請(qǐng)業(yè)務(wù)表單開(kāi)發(fā)

  現(xiàn)在請(qǐng)假申請(qǐng)的整個(gè)流程的定義我們算完成了,下面我們就開(kāi)始開(kāi)發(fā)請(qǐng)假表單,表單開(kāi)發(fā)非常簡(jiǎn)單,我們可以按常規(guī)的開(kāi)發(fā)表單的方式進(jìn)行開(kāi)發(fā),再加載到框架下即可。開(kāi)發(fā)表單前我們需要在數(shù)據(jù)庫(kù)中建立請(qǐng)假單這個(gè)數(shù)據(jù)表。同時(shí)表中需要包含以下四個(gè)字段:WorkFlowId(工作流主鍵)、WorkFlowInsId(工作流實(shí)例主鍵)、WorkTaskId(工作任務(wù)主鍵)、WorkTaskInsId(工作任務(wù)實(shí)例主鍵)。如下圖所示:

實(shí)例演示如何使用RDIFramework.NET 框架的工作流組件進(jìn)行業(yè)務(wù)流程的定義—請(qǐng)假申請(qǐng)流程-WinForm

  表定義好了,現(xiàn)在我們就要進(jìn)行業(yè)務(wù)表單的開(kāi)發(fā)了,打開(kāi)VS,開(kāi)發(fā)請(qǐng)假申請(qǐng)表單,如下圖所示:

實(shí)例演示如何使用RDIFramework.NET 框架的工作流組件進(jìn)行業(yè)務(wù)流程的定義—請(qǐng)假申請(qǐng)流程-WinForm

再編寫(xiě)表單代碼,在代碼中可以自由實(shí)現(xiàn)表單的業(yè)務(wù)邏輯,非常的靈活。同時(shí)流程的業(yè)務(wù)表單只需要繼承自我們已經(jīng)實(shí)現(xiàn)的基類(FrmBaseBizeForm)即可,再重載相應(yīng)的方法。下面給了整個(gè)請(qǐng)假申請(qǐng)的業(yè)務(wù)表單實(shí)現(xiàn)代碼以供參考,如下所示:

using System;
using System.Data;
 
namespace RDIFramework.WorkFlow
{
    using RDIFramework.BizLogic;
    using RDIFramework.Utilities;
    using RDIFramework.WinForm.Utilities;
 
    /// <summary>
    /// 請(qǐng)假申請(qǐng)
    /// </summary>
    public partial class FrmQingJia : FrmBaseBizeForm
    {
        public FrmQingJia()
        {
            InitializeComponent();
        }
 
        private void FrmQingJia_Load(object sender, EventArgs e)
        {
            base.Form_Load();
            this.SetControlState();
            this.ShowEntity();
        }
 
        public override void SetControlState()
        {
            if (!string.IsNullOrEmpty(this.PageState))
            {
                this.pnlTool.Enabled = this.PageState != WorkConst.STATE_VIEW;
            }
             
            if (!string.IsNullOrEmpty(this.CtrlState))
            {
                gbMain.Enabled = btnSave.Enabled = this.CtrlState != "查看";
            }
            else
            {
                gbMain.Enabled = btnSave.Enabled = false;
            }
        }
 
        public override void ShowEntity()
        {
            string sql = "select * from testQingjia where workflowinsId=@workflowinsId";
            var sqlBuilder = new SQLBuilder(this.WorkFlowDbProvider);
            sqlBuilder.BeginSelect("testQingjia");
            sqlBuilder.SetWhere("workflowinsId", WorkFlowInsId);
            DataTable dt = sqlBuilder.EndSelect();
            if (dt != null && dt.Rows.Count > 0)//判斷是否有數(shù)據(jù),有數(shù)據(jù)讀取數(shù)據(jù)庫(kù)中的值
            {
                txtUserId.Text = dt.Rows[0]["userid"].ToString();
                txtUserName.Text = dt.Rows[0]["userName"].ToString();
                txtDuty.Text = dt.Rows[0]["dutyCaption"].ToString();
                txtDepartment.Text = dt.Rows[0]["archCaption"].ToString();
                dtBeginTime.Text = dt.Rows[0]["beginTime"].ToString();
                dtEndTime.Text = dt.Rows[0]["endTime"].ToString();
                txtDays.Text = dt.Rows[0]["Days"].ToString();
                txtQingJia.Text = dt.Rows[0]["QingJia"].ToString();
                cboQingJiaType.Text = dt.Rows[0]["QingJiaType"].ToString();
            }
            else//如果沒(méi)有數(shù)據(jù),初始化默認(rèn)值
            {
                txtUserId.Text = UserId;
                txtUserName.Text = UserName;
                txtDuty.Text = DutyCaption;
                txtDepartment.Text = ArchCaption;
                dtBeginTime.Text = DateTime.Now.ToShortDateString();
                dtEndTime.Text = DateTime.Now.ToShortDateString();
            }
        }
 
        public override void SaveFormData(bool isDraft)
        {
            base.SaveFormData(isDraft);
            var sqlBuilder = new SQLBuilder(this.WorkFlowDbProvider);
            string sql = "DELETE TESTQINGJIA WHERE WORKFLOWINSID=@WORKFLOWINSID";//先刪除原有數(shù)據(jù)
            sqlBuilder.BeginDelete("testQingjia");
            sqlBuilder.SetWhere("WORKFLOWINSID", WorkFlowInsId);
            sqlBuilder.EndDelete();
 
 
            sqlBuilder.BeginInsert("testQingjia");
            sqlBuilder.SetValue("WorkFlowId", WorkFlowId);
            sqlBuilder.SetValue("WorkTaskId", WorkTaskId);
            sqlBuilder.SetValue("WorkFlowInsId", WorkFlowInsId);
            sqlBuilder.SetValue("WorkTaskInsId", WorkTaskInsId);
            sqlBuilder.SetValue("ID", BusinessLogic.NewGuid());
            sqlBuilder.SetValue("userId", txtUserId.Text);
            sqlBuilder.SetValue("userName", txtUserName.Text);
            sqlBuilder.SetValue("dutyCaption", txtDuty.Text);
            sqlBuilder.SetValue("archCaption", txtDepartment.Text);
            if (this.WorkFlowDbProvider.CurrentDbType == CurrentDbType.Oracle)
            {
                sqlBuilder.SetValue("BeginTime", !string.IsNullOrEmpty(dtBeginTime.Text) ? BusinessLogic.GetOracleDateFormat(DateTimeHelper.ToDate(dtBeginTime.Text)) : BusinessLogic.ConvertToDateToString(dtBeginTime.Text));
                sqlBuilder.SetValue("EndTime", !string.IsNullOrEmpty(dtEndTime.Text) ? BusinessLogic.GetOracleDateFormat(DateTimeHelper.ToDate(dtEndTime.Text)) : BusinessLogic.ConvertToDateToString(dtEndTime.Text));
            }
            else
            {
                sqlBuilder.SetValue("BeginTime", BusinessLogic.ConvertToDateToString(dtBeginTime.Text));
                sqlBuilder.SetValue("EndTime", BusinessLogic.ConvertToDateToString(dtEndTime.Text));
            }
            sqlBuilder.SetValue("Days", txtDays.Text);
            sqlBuilder.SetValue("QingJiaType", BusinessLogic.ConvertToString(cboQingJiaType.SelectedItem));
            sqlBuilder.SetValue("QingJia", txtQingJia.Text);
            sqlBuilder.EndInsert();
        }
 
        private bool CheckInput()
        {
            if (string.IsNullOrEmpty(BusinessLogic.ConvertToString(cboQingJiaType.SelectedItem)))
            {
                MessageBoxHelper.ShowWarningMsg("請(qǐng)選擇請(qǐng)假類型!");
                cboQingJiaType.Focus();
                return false;
            }
 
            if (string.IsNullOrEmpty(txtDays.Text))
            {
                MessageBoxHelper.ShowWarningMsg("請(qǐng)假天數(shù)不能為空!");
                txtDays.Focus();
                return false;
            }
 
            if(!MathHelper.IsDecimal(txtDays.Text))
            {
                MessageBoxHelper.ShowWarningMsg("請(qǐng)假天數(shù)必須為數(shù)值型!");
                txtDays.Focus();
                return false;
            }
 
            if (string.IsNullOrEmpty(txtQingJia.Text))
            {
                MessageBoxHelper.ShowWarningMsg("請(qǐng)假事由不能為空!");
                txtQingJia.Focus();
                return false;
            }
 
            return true;
        }
 
        private void btnSave_Click(object sender, EventArgs e)
        {
            if (!CheckInput())
            {
                return;
            }
 
            this.SaveFormData(false);
            MessageBoxHelper.ShowSuccessMsg("保存成功!");
        }
    }
}

  四、表單與業(yè)務(wù)流程的綁定

  表單開(kāi)發(fā)完成后,我們需要在RDIFramework.NET框架中對(duì)表單進(jìn)行綁定,如下圖所示:

實(shí)例演示如何使用RDIFramework.NET 框架的工作流組件進(jìn)行業(yè)務(wù)流程的定義—請(qǐng)假申請(qǐng)流程-WinForm

  具體各項(xiàng)的說(shuō)明可以參考RDIFramework.NET工作流部分的介紹文檔。表單在框架中定義好后,我們?cè)僭谡?qǐng)假申請(qǐng)各任務(wù)節(jié)點(diǎn)對(duì)表單進(jìn)行綁定,需要說(shuō)明的是,我們是以主表單以基礎(chǔ)進(jìn)行綁定的,這就代表一個(gè)任務(wù)節(jié)點(diǎn)可以擁有多個(gè)表單,這對(duì)復(fù)雜的業(yè)務(wù)非常有用。下面看下請(qǐng)假流程中部門(mén)經(jīng)理對(duì)表單的綁定如下圖所示,在“表單名”后面的按鈕“...”就可以打開(kāi)選擇我們已經(jīng)定義的主表單,來(lái)作為當(dāng)前任務(wù)節(jié)點(diǎn)的表單列表。

實(shí)例演示如何使用RDIFramework.NET 框架的工作流組件進(jìn)行業(yè)務(wù)流程的定義—請(qǐng)假申請(qǐng)流程-WinForm

  五、請(qǐng)假申請(qǐng)演示

  請(qǐng)假申請(qǐng)是每個(gè)登錄系統(tǒng)的人都應(yīng)該可以使用的業(yè)務(wù)流程,因此我們把“請(qǐng)假申請(qǐng)”的啟動(dòng)節(jié)點(diǎn)的處理才指定為“所有人”,這就代表只要能登錄系統(tǒng),就可以使用“請(qǐng)假申請(qǐng)”流程。如下圖所示:

實(shí)例演示如何使用RDIFramework.NET 框架的工作流組件進(jìn)行業(yè)務(wù)流程的定義—請(qǐng)假申請(qǐng)流程-WinForm

  打開(kāi)“日常業(yè)務(wù)”功能模塊,可以看到當(dāng)前用戶可以使用的業(yè)務(wù)流程,如下圖所示:

  實(shí)例演示如何使用RDIFramework.NET 框架的工作流組件進(jìn)行業(yè)務(wù)流程的定義—請(qǐng)假申請(qǐng)流程-WinForm

  在“可用業(yè)務(wù)”中選擇“行政部”,右側(cè)列出所選節(jié)點(diǎn)當(dāng)前用戶有權(quán)限啟動(dòng)的所有業(yè)務(wù)流程,我們選擇“員工請(qǐng)假流程”,單擊“開(kāi)始任務(wù)”,打開(kāi)啟動(dòng)任務(wù)主界面,如下圖所示。假設(shè)請(qǐng)假4天,則應(yīng)由當(dāng)前用戶所在部門(mén)經(jīng)理審批的同時(shí)還需要分公司總經(jīng)理審批。

實(shí)例演示如何使用RDIFramework.NET 框架的工作流組件進(jìn)行業(yè)務(wù)流程的定義—請(qǐng)假申請(qǐng)流程-WinForm

  單擊提交后,流程提交到部門(mén)經(jīng)理“wikstone”處,以wikstone用戶登錄,在未認(rèn)領(lǐng)任務(wù)界面,可以看到請(qǐng)假申請(qǐng)已經(jīng)提交給“部門(mén)經(jīng)理處了,如下圖所示:

實(shí)例演示如何使用RDIFramework.NET 框架的工作流組件進(jìn)行業(yè)務(wù)流程的定義—請(qǐng)假申請(qǐng)流程-WinForm

  RDIFramework.NET工作流組件約定所有任務(wù)提交后都會(huì)進(jìn)入對(duì)方未認(rèn)領(lǐng)任務(wù)列表,這樣做的好處是:如果當(dāng)前提交后想反悔,只要對(duì)方?jīng)]有認(rèn)領(lǐng),就可以撤回任務(wù)。選擇“認(rèn)領(lǐng)任務(wù)”后,進(jìn)行待辦任務(wù)窗體,如下圖所示:

實(shí)例演示如何使用RDIFramework.NET 框架的工作流組件進(jìn)行業(yè)務(wù)流程的定義—請(qǐng)假申請(qǐng)流程-WinForm

  選擇一條待辦任務(wù)后,我們可以“處理任務(wù)”,放棄對(duì)當(dāng)前任務(wù)的認(rèn)領(lǐng)、查看當(dāng)前任務(wù)的執(zhí)行流程圖,當(dāng)前任務(wù)的“處理記錄”等。我們選擇“處理任務(wù)”按鈕,對(duì)當(dāng)前任務(wù)進(jìn)行處理,如下圖所示:

實(shí)例演示如何使用RDIFramework.NET 框架的工作流組件進(jìn)行業(yè)務(wù)流程的定義—請(qǐng)假申請(qǐng)流程-WinForm

  在“處理任務(wù)”主界面,我們可以做很多的操作,具體可以參考RDIFramework.NET工作流組件的相關(guān)說(shuō)明,這兒就不一一闡述了。填寫(xiě)好審批意見(jiàn)后,單擊“提交”按鈕,即可根據(jù)流程定義(當(dāng)前請(qǐng)假天數(shù)大于3天)提交到“分公司總經(jīng)理”處審批。下面我們以分公司總經(jīng)理“l(fā)sx”的用戶登錄系統(tǒng),可以看到請(qǐng)假申請(qǐng)已經(jīng)提交到了分公司總經(jīng)理處。如下圖所示:

實(shí)例演示如何使用RDIFramework.NET 框架的工作流組件進(jìn)行業(yè)務(wù)流程的定義—請(qǐng)假申請(qǐng)流程-WinForm

   按同樣方式進(jìn)行任務(wù)處理,再提交,流程就可以回到流程啟動(dòng)用戶了。我們以流程啟動(dòng)者登錄進(jìn)來(lái)看下,查看下審批列表,如下圖所示:

實(shí)例演示如何使用RDIFramework.NET 框架的工作流組件進(jìn)行業(yè)務(wù)流程的定義—請(qǐng)假申請(qǐng)流程-WinForm

  同時(shí)我們可以查看流程執(zhí)行情況,如下圖所示:

實(shí)例演示如何使用RDIFramework.NET 框架的工作流組件進(jìn)行業(yè)務(wù)流程的定義—請(qǐng)假申請(qǐng)流程-WinForm

  至此,整個(gè)請(qǐng)假申請(qǐng)業(yè)務(wù)流程完成,當(dāng)前在流程流轉(zhuǎn)的過(guò)程中還有很多操作,比如:任務(wù)的回退、授權(quán)、指派、召回等都可以輕易實(shí)現(xiàn)。 

作者: EricHu 
出處:http://www.cnblogs.com/huyong/ 
Email:406590790@qq.com 
QQ交流:406590790 
QQ群:237326100 
框架博客:http://yonghu.blog.51cto.com/   http://www.cnblogs.com/huyong
RDIFramework.NET,基于.NET的快速信息化系統(tǒng)開(kāi)發(fā)、整合框架,給用戶和開(kāi)發(fā)者最佳的.Net框架部署方案。 
關(guān)于作者:高級(jí)工程師、信息系統(tǒng)項(xiàng)目管理師、DBA。專注于微軟平臺(tái)項(xiàng)目架構(gòu)、管理和企業(yè)解決方案,多年項(xiàng)目開(kāi)發(fā)與管理經(jīng)驗(yàn),曾多次組織并開(kāi)發(fā)多個(gè)大型項(xiàng)目,在面向?qū)ο蟆⒚嫦蚍?wù)以及數(shù)據(jù)庫(kù)領(lǐng)域有一定的造詣?,F(xiàn)主要從事基于 RDIFramework.NET 框架的技術(shù)開(kāi)發(fā)、咨詢工作,主要服務(wù)于金融、醫(yī)療衛(wèi)生、鐵路、電信、物流、物聯(lián)網(wǎng)、制造、零售等行業(yè)。 
如有問(wèn)題或建議,請(qǐng)多多賜教! 
本文版權(quán)歸作者和CNBLOGS博客共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁(yè)面明顯位置給出原文連接,如有問(wèn)題,可以通過(guò)郵箱或QQ 聯(lián)系我,非常感謝。

當(dāng)前名稱:實(shí)例演示如何使用RDIFramework.NET框架的工作流組件進(jìn)行業(yè)務(wù)流程的定義—請(qǐng)假申請(qǐng)流程-WinForm
本文鏈接:http://aaarwkj.com/article42/igjiec.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開(kāi)發(fā)、網(wǎng)站策劃、做網(wǎng)站商城網(wǎng)站、網(wǎng)站制作微信公眾號(hào)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

微信小程序開(kāi)發(fā)
久久伊人69日韩精品| 91美女黑丝免费国产视频| 日本和亚洲的香蕉视频| 99精品久久久中文字幕日本| 白浆视频在线免费观看| 欧美日本国产专区一区| 亚洲一区制服无码中文| av男人的天堂一区二区| 毛片91成人在线播放| 青青草成人一区二区三区| 欧美日韩一区二区三区激情| 伊人激情久久综合中文字幕| 日本高清精品视频在线| 加勒比人妻一区二区三区| 粉嫩极品美女国产精品| 亚洲精品国产av成人| 日韩综合欧美激情另类| 亚洲美腿丝袜综合在线| 国产精品五月婷婷六月丁香| 天天免费日日夜夜夜夜| 中文有码人妻字幕在线| 欧美久久久久久久黑人| 人妻免费视频中文字幕| 亚州中文字幕久久一区| 亚洲成人自拍视频在线观看| 日本少妇三级网站大全| 人妻乱人伦中文字幕在线| 强暴美女视频大全久久久| 亚洲国产熟女导航网站视频| 国产91九色视频在线| 亚洲视频一直看一直爽| 国产三级在线视频不卡| 国产成人性生交大片免费| 欧美日韩国产精品综合| 午夜少妇诱惑一区二区三区| 国产传媒剧情剧资源网站| 色欧美在线视频观看日韩| 午夜日韩综合激情视频在线观看 | 日韩在线免费色视频| 日本一区二区不卡二区| 国产精品国产自产拍高清|