Sharepoint 客製化筆記_internal


修改與Outlook Appointment有關的功能:

修改Power Item Event Receiver
ItemAdding: 檢查權限,只有HR/OPS群組的人可以代填,非本人退回
ItemAdded: 使用EWS API發出約會
Item Updating:
Item Updated: 
Item Deleting:

修改一般流程:

使用SPD開啟Workflow Editor,更改條件與Action


運作原理

流程控制(Workflow)

Sharepoint 2007 平台內建workflow引擎,有三種程度的客制化方式:
第一種,直接在清單設定(List Setting)當中,套用「三態工作流程」、「蒐集簽名」等出廠套裝元件,僅需在設定頁面填入連動群組、連動任務清單即可,系統會自通處理郵件通知與狀態變更,完全不需要撰寫程式語言或者敘述腳本(script)。
第二種,透過套裝軟體Sharepoint Designer(以下簡稱SPD)當中的workflow編輯器,設定較為詳細的條件判斷式與行動(activity),Sharepoint套裝提供相當多行動元件,例如寄送郵件、發配新任務、更改核准狀態等等,一般來說這個程度的客制化已經足夠處理大多數應用實例,同樣也不需要撰寫程式語言或腳本。
SPD需要另外安裝,在安裝SPD的客戶端(Client)需要登入並且具有足夠權限才能更改遠端Sharepoint Server設定。
第三種,以C#配合Visual Studio開發動態執行元件(dll), 並且需要透過部署、重啓iis服務等動作始能生效。
請假差旅系統採用第二種方式客制化,並且增加額外套件"PowerActivity", 以PowerShell Script開發更精準的行動,如此可以同時兼顧靈活度並且避免頻繁的部署/重啓動作,進而縮短維修停機時間(down time)。
*以開發者身份,自SPD遠端開啟Workflow編輯器,即可更動流程控制細節,並且部署客制化行動的Script

網頁組件(Webpart)

Sharepoint預設提供List/Create/View/Edit四個頁面供基本CRUD操作,在每個副檔名為aspx的頁面上,具有權限的使用者可以加入更多Sharepoint出廠提供的網頁組件。
一般使用C#配合Visual Studio客制化網頁組件,並以wsp型式部署至Sharepoint執行環境。
請假差旅系統採用額外套件"PowerWebPart",以 PowerShell Script編寫網頁組件行為,可以避免部署/重啓,縮短維修停機時間。
*請假差旅系統當中,主管核准表格、代理人同意表格、人資確認表格皆為客制化網頁組件,以PowerShell Script撰寫
以SPAdmin身份登入,在頁面編輯模式下即可變更/部署script

事件監視器(Event Receiver)

事件監視器指當項目(Item)或清單(List)發生變動時會被呼叫的一組API, 可以透過繼承方式自定行為,一般使用C#配合Visual Studio開發,並以wsp型式部署至Sharepoint執行環境。
常用事件包含ItemAdding, ItemAdded, ItemUpdating, ItemUpdated, ItemDeleting, ItemDeleted。List也有相對事件監視器,由於請假差旅系統並未使用,在此略過。
這裡需要注意的是,ItemAdding發生在項目被寫入資料庫之前,如果要對項目內容作可用性檢查(validation),應當將行為寫在ItemAdding中,而非ItemAdded.
請假差旅系統採用額外套件"PowerEventReceiver", 以PowerShell Script編寫自定行為,同樣可以避免頻繁部署重啓。

ExchangeWebService API(EWS API)

由微軟提供的一組dll,提供與Exchange Server溝通的API, 請假差旅系統使用這組API發出約會請求,藉此達到標註Outlook Calendar狀態的效果。
*以SPAdmin身份登入,可以在請假差旅系統的清單設定當中,看到"Power Item Event Receiver"項目,當中所設定的內容為一段PowerShell Script,
主要用於發出約會給申請人,並且在更改/刪除項目的時候同步更新約會項目。

排程維護(Schedule)

一般Windows Server皆可設定排程工作,請假差旅系統每個月會執行一段PowerShell Script,根據每位員工的請假記錄修正剩餘額度。
*以Sharepoint local管理者身份登入主機,可以在C:/HR_Leave_System資料夾下看到每月修正額度的Script

JavaScript Webpart

在特定頁面當中加入Content Editor Web Part (CEWP),並且於原始碼編輯器當中貼上JavaScript,則頁面會在載入時運行這些JavaScript。
目前請假差旅系統當中,有一些頁面會使用到基於jQuery的JavaScript, 幫助填表與增進使用者功能。

原始碼位置

命名原則


根據「運作原理」段落所述,
每一個原始碼檔案命名原則即為其構件屬性與運作順序/安裝位置/功能。
例:
檔名為event_receiver.ps1,部屬位置為Event Receiver, 原始碼屬性為PowerShell script
檔名為javascript_NewForm.aspx.js,部屬位置為NewForm.aspx上的CEWP
檔名為webpart_manager_approve.ps1,部屬位置為DispForm.aspx上的PowerWebPart構件,對象為manager approve這個物件
檔名為workflow_leave-1_break_permission_create_appointment.ps1,部屬位置為PowerActivity, 對象為leave項目的第一步

部屬方法

基本上都是複製貼上,
Workflow:從SPD開啟網站,選取LeaveRequestWorkflow, 然後找到對象Activity取代內容,最後按下「完成」。每次變更Workflow都會產生新的Workflow規則, 只能綁定在Workflow更新後產生的項目上,「既往不究」。需要Designer以上權限。
WebPart:以IE開啟頁面,進入編輯模式,替換原始碼即可。需要SPAdmin權限(找George)。
EventReceiver:以IE開啟頁面,進入List Setting找到"Power Item Event Receiver",替換原始碼即可。需要SPAdmin權限。
Schedule:把原始碼檔交給Sharepoint 本機端管理者,請他讓這段Script會在預定時間執行即可。
JavaScript:以IE開啟頁面,進入編輯模式,替換對象CWEP原始碼即可。需要Designer以上權限。 

留言