Workflow筆記一

来源:http://www.cnblogs.com/jiekzou/archive/2016/12/17/6184695.html
-Advertisement-
Play Games

什麼是工作流? 工作流(Workflow),是對工作流程及其各操作步驟之間業務規則的抽象、概括、描述。BPM:是Business Process Management的英文字母縮寫.即業務流程管理,是一套達成企業各種業務環節整合的全面管理模式。 工作流軟體,顧名思義,就是業務信息數據在多個環節模塊之 ...


什麼是工作流?

工作流(Workflow),是對工作流程及其各操作步驟之間業務規則的抽象、概括、描述。
BPM:是Business Process Management的英文字母縮寫.即業務流程管理,是一套達成企業各種業務環節整合的全面管理模式。
工作流軟體,顧名思義,就是業務信息數據在多個環節模塊之間的流轉。
企業內部業務種類非常多、變化也非常多。雖然業務變化非常多,但是流程的控制基本是不變的。我們常說的工作流或者是“流程”就是指 控制流程流轉的核心引擎。

市面常見的工作流開發框架如下所示。

Windows Workflow Foundation

Windows Workflow Foundation(以下簡稱WWF)提供了一個編程框架和工具以開發和執行各種不同的基於工作流的應用程式,比如文檔管理、線型的商業應用、貿易單據流程、IT管理、B2B應用以及消費者應用。
WF(Windows Workflow Foundation)是微軟的工作流基礎組件。它是DotNet Framework中提供基於模型或者是聲明方式的流程執行引擎。
WF由DotNet Framework3.0一起發佈。而且已經被應用與微軟的Sharepoint技術中。


WF包括3個核心組件:

  • 活動框架
  • 工作流活動運行時環境
  • 工作流設計器

第一個工作流項目

1、打開VS新建一個解決方案,在解決方案中新建項目——WorkFlow——工作流控制台應用程式,命名為WorkflowConsoleApp

2、視圖——工具箱,添加WriteLine基元

WriteLine Activity:用於輸出一段字元串。

 

再添加一個WriteLine基元

會自動將這兩個基元包裝在一個Sequence序列容器裡面,然後執行順序從上至下。當然也我們可以先添加一個Sequence序列容器,然後再往這個容器裡面添加基元。

順序工作流

  • 順序工作流就是將順序工作流容器中的所有動作按照順序往下執行。
  • 順序容器Sequence:是在System.Activities.dll中定義的類型,繼承 NativeActivity是一個 sealed類。

•  1.[Activities]集合,可以存放Activity

•  2.[Activities]集合中的Activity按順序從上向下執行

•  3.[Variables]集合用於存放變數

3、我們來看Program.cs中的代碼如下:

    Activity workflow1 = new Workflow1();
    WorkflowInvoker.Invoke(workflow1);

這裡就是工作流的啟動方式。WorkflowInvoker 包含同步調用工作流的實例方法和靜態方法。

為了更好的查看運行效果,添加如下代碼:

    Console.ReadLine();

4、按F5運行

WF入門之活動

ActivityWF中是一個最基本的概念,當談及Activity,通常是指如下兩個概念:

  • Activty Class 。
  • 在工作流中任意Activity派生類的統稱。

活動也就是流程中的步驟如果下圖

這裡,我們新建一個財務審批流程。

1、  新建活動

右鍵單擊項目WorkflowConsoleApp,添加“新建項”,選擇活動,命名為MoneyApproveActivity.xaml

 

2、  添加流程

 

修改名稱為”財務審批流程”。

3、  添加兩個WriteLine基元

4、  添加代碼活動

CodeActivity 代碼活動

  • WF4.0 提供了許多Activity,但有時這些Activtiy並不能完成具體功能,如向資料庫添加數據,發送電子郵件等.在實現這些具體功能時,我們仍要使用某種編程語言,如C#.當我們需要這種功能時,可以使用 CodeActivity。
  • 它是一個抽向類,繼承該類後,需要override該類的Execute方法,用於編寫自定義的功能代碼

右鍵單擊項目WorkflowConsoleApp,添加“新建項”,選擇“代碼活動”,然後命名為InputMoneyCodeActivity.cs

這個時候,我們看見預設的代碼如下:

    public sealed class InputMoneyCodeActivity : CodeActivity
    {
        //	   

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 裝箱是將值類型轉換為 object 類型或由此值類型實現的任何介面類型的過程。 當 CLR 對值類型進行裝箱時,會將該值包裝到 System.Object 內部,再將後者存儲在托管堆上。 取消裝箱將從對象中提取值類型。 裝箱是隱式的;拆箱是顯式的。 裝箱和拆箱的概念是類型系統 C# 統一視圖的基礎, ...
  • 線程池的作用線程池,顧名思義,線程對象池。Task和TPL都有用到線程池,所以瞭解線程池的內幕有助於你寫出更好的程式。由於篇幅有限,在這裡我只講解以下核心概念: 線程池的大小 如何調用線程池添加任務 線程池如何執行任務 Threadpool也支持操控IOCP的線程,但在這裡我們不研究它,和task以 ...
  • 初學者,採用簡單三層架構,本來想用autofac依賴註入,只用sql server,沒打算遷移到別的資料庫,因此,簡單一點,就不用了。先做用戶管理模塊,登錄註冊等,客戶端cooke存儲,利用DESCryptoServiceProvider加密,源代碼下載地址:https://github.com/J ...
  • 最近悟出來一個道理,在這兒分享給大家:學歷代表你的過去,能力代表你的現在,學習代表你的將來。 十年河東十年河西,莫欺少年窮 學無止境,精益求精 C#洗牌演算法如下: 採用的是交換位置法,程式執行54次。效率還是頗高滴! @陳卧龍的博客 ...
  • 一、前言 在WPF編程中,有時候我們使用DataGrid會需要在一個DataColumn中既有TextBox,也要有ComboBox或者TextBlock等其他數據顯示樣式。 這個時候我們就需要DataGridTemplateColumn去自定義我們的Column樣式,通過數據類型去判斷該信息是以T ...
  • 在上一篇多線程(基礎篇2)中,我們主要講述了確定線程的狀態、線程優先順序、前臺線程和後臺線程以及向線程傳遞參數的知識,在這一篇中我們將講述如何使用C#的lock關鍵字鎖定線程、使用Monitor鎖定線程以及線程中的異常處理。 九、使用C#的lock關鍵字鎖定線程 1、使用Visual Studio 2 ...
  • 建立窗體的名稱修改為:Form_HoverTree文後附有源碼下載。主要代碼: 效果圖: 可以看出,這個窗體為自定義形狀的窗體,沒有標題欄。具體參考:http://hovertree.com/h/bjaf/52nadvt4.htm 源碼下載: http://hovertree.com/h/bjaf/ ...
  • 委托是個說爛了的話題,但是依舊有好多人不知道為什麼要在C 中使用委托,最近有朋友也問到我這個問題,所以舉例些場景,以供那些知道怎麼聲明委托、怎麼調用卻不知道為什麼要用的朋友一些參考,當然也是希望驗證下自己的理解是否正確。 如何聲明一個委托 委托使用關鍵字delegate,從外形上看和一個沒有方法體的 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...