日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SharePoint 2010: 设计BCS工作流

發布時間:2024/10/8 编程问答 58 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SharePoint 2010: 设计BCS工作流 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一起使用SharePoint工作流和BCS可以實現很多復雜的業務場景。

為什么使用BCS工作流?

比如,有一個簡單的費用報銷流程,客戶希望:僅當總費用超過某個限額時,工作流會把費用報告發送給審批者;如果低于這個限額,則自動審批通過。而每個人的限額是不同的,每個人的限額可以從某個外部系統中獲取到。我們可以考慮利用BCS獲取到這個數據。如果這個數據是通過外部數據列表暴露在SharePoint的,工作流就可以查詢到這個數據。

支持的工具

一般來講,我們有2種工具來設計BCS工作流。一是采用SharePoint Designer 2010提供的開箱即用的Activity來設計,再有,就是使用Visual Studio。

設計時需要牢記的幾點

設計BCS工作流時,有幾個點非常重要。

  • 工作流不能關聯到外部數據列表

    在SharePoint 2010里,工作流不能直接關聯到外部數據列表。這是因為外部數據不是保存在SharePoint里,所以當列表條目發生變化時無法通知給工作流。但這并不意味著外部數據無法使用工作流。我們可以創建一個站點工作流,或者為某個常規列表(如文檔庫)創建一個工作流,并讓這個列表從外部數據列表讀取/更新數據。當然,我們也可以將外部數據列表項作為SPD任務處理的目標,盡管任務鏈接總是外部數據列表項沒有標題。

  • 訪問BCS的工作流必須以服務賬號運行,即使在身份模擬步驟下

    工作流會一直以服務賬號來運行(一般是IIS的應用程序池賬號),并且只有當使用Secure Store Service或者RevertToSelf(因為安全原因,默認情況下被關閉)時才支持工作流。這樣的限制是為了保護SharePoint受到惡意模型/開發人員的攻擊。因為對后臺系統的訪問總會以某個服務賬號觸發,所以我們無法跟蹤到底是誰修改了數據。要解決這個問題,我們可以讓工作流把SPUser的名稱傳遞到外部數據列表的某個列,或者是某個使用BDC API的自定義Activity,但這僅僅是為了信息追蹤的目的而不是一個可靠的安全保護措施。

  • 如何設計BCS工作流?

    使用SPD List Item Activity和使用外部數據列表是非常類似的,2者最大的差別是對于SPD List Item Activity,我們識別它時需要使用其Identifying列而不是ID。

    使用SPD Activity構建安全限額工作流

    接下來我們開始設計前面提及的費用報銷工作流。

    • 在SPD中創建外部內容類型,命名為SafeLimit;
      • 有2個字段:EmployeeID和安全限額的值
    • 使用SafeLimit外部內容類型,創建外部數據列表,命名為SafeLimits;
    • 創建一個名稱為ExpenseReports的文檔庫;
      • 添加一個EmployeeID的新列
    • 在SPD中,打開ExpenseReports文檔庫;
    • 點擊"New List Workflow";
    • 為工作流起一個名稱,并且輸入描述信息,然后點擊下一步;
    • 添加一個"Set Workflow Variable"的動作;
    • 點擊工作流變量鏈接,點擊"Create New Variable",命名為 SafeLimit;
    • 點擊"Value",然后 點擊按鈕 創建外部數據列表查詢;
    • 選擇SafeLimits外部數據列表作為數據源;
    • 選擇顯示Safe Limit的字段Limit;
    • 選擇EmplyeeID;
    • 點擊對話框中的按鈕,在新對話框中選擇"Current Item",然后再選擇EmployeeID。

    完成上面的操作后,結果如下圖。現在可以選擇SafeLimit變量,并且在工作流中使用它來作決策了。

    備注:當點擊"Ok"后,會有一個如下的警示信息。這對于外部數據列表來講是正常的,無需在意。它只是告訴我們如果外部數據列表項目沒有唯一值,那么系統將返回第一個找到的項目。

    小提示:關于Activity用法和常見錯誤

    什么情況下使用這些Activity?

    • 如果需要從外部數據列表中讀取一小部分列,并且在工作流中使用它們。
      • 從同一個外部數據列表中讀取多個值并不會緩沖該條目。正因為如此,Activity會對每個要讀取的列首先調用Read List方法,然后再調用Read Item方法。所以,如果我們要讀取一個包含1000個條目的列表的10個屬性值,系統需要發起20個對BDC的調用,并且最終從后臺系統中讀取到20010個條目。
    • 如果需要創建、更新或者刪除外部數據列表的一小部分條目。

    需要牢記在心的內容

    • 如果要查找某一個條目,如某個員工的辦公室編號,但系統返回的值是Null,我們無法確定是返回了0個條目還是1個條目,我們只知道值是Null,這時候我們該怎么辦呢?我們可以首先確認該條目是否存在,如:根據員工 姓名或ID找到該員工。如果該員工存在,然后再找到其辦公室編號;如果是Null,那我們就知道該員工沒有辦公室編號了。
    • 在外部數據列表中創建新的條目后,從同一工作流對該條目的任何修改都必須通過Create List Item方法返回的BDC Identity反饋到該條目。如果嘗試通過從所有列中找值的方式來找到該條目,肯定會導致失敗。
    • 絕對無法從已有的條目中讀取BDC Identity的值,必須通過找非BDC Identity列的值方式才可以找到已有的條目。

    轉載于:https://www.cnblogs.com/dwang/archive/2010/06/19/1761002.html

    總結

    以上是生活随笔為你收集整理的SharePoint 2010: 设计BCS工作流的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。