Yêu cầu đặt ra:
Khi thêm mới 1 item vào list hóa đơn thì chi
tiết hóa đơn cũng được thêm vào list chitiethoadon 1 item tương ứng
Thiết kế list:
HoaDon: TieuDe, ProductName
ChiTietHoaDon: TieuDe, ProductName
Định nghĩa: là 1 tiến trình xử lý các tác vụ, công việc.
Cách tạo workflow:
Tạo mới Project: Chọn Visual C# | Office | 2007
| Sharepoint 2007 Sequential Workflow
Đặt tên workflow và chỉ tới URL chứa những List
cần xử lý
Chọn List cần tạo workflow
Chỉ ra các điều kiện để workflow chạy
Sauk hi hoàn tất giao diện workflow như sau:
Trước tiên phải khai báo ID cho workflow bằng
cách double click vào onWorkflowActived1
private void onWorkflowActivated1_Invoked(object sender, ExternalDataEventArgs e)
{
this.workflowId =
workflowProperties.WorkflowId;
}
Thông thường workflow đơn giản - mô hình logic
như sau : khi workflow active thực thi code sau đó ghi log và hoàn tất. Mô hình
như sau:
Kéo các control tương ứng của workflow
Sau khi đã thiết kế workflow hoàn tất như trên,
ta sẽ khai báo cấu hình và viết code tương ứng
- Double click vào codeActived1
- Khai báo biến toàn cục
public string historyDes = "";
public string historyOut = "";
b. Trong code ta khai báo
this.historyDes = "Workflow
Completed";
this.historyOut = "OK";
- Click phải vào log
- HistoryDescription chọn biến
toàn cục historyDes
- HistoryOutcome chọn biến toàn
cục historyOut
- Sau khi chon xong ta sẽ viết
code trong codeActived như sau:
public sealed partial class Workflow1 : SequentialWorkflowActivity
{
public Workflow1()
{
InitializeComponent();
}
public Guid workflowId = default(System.Guid);
public SPWorkflowActivationProperties workflowProperties = new SPWorkflowActivationProperties();
public string historyDes = "";
public string historyOut = "";
private void onWorkflowActivated1_Invoked(object sender, ExternalDataEventArgs e)
{
this.workflowId =
workflowProperties.WorkflowId;
}
private void codeActivity1_ExecuteCode(object sender, EventArgs e)
{
//chỉ ra web ma list HoaDon đang đứng
SPWeb web =
workflowProperties.Web;
//chỉ ra List ma list HoaDon đang đứng
SPList list =
workflowProperties.List;
//chỉ ra ListItem ma list HoaDon đang đứng
SPListItem itemHoaDon =
workflowProperties.Item;
//khai báo và chỉ ra List ChiTietHoaDon
SPList spListChiTietHoaDon
= web.Lists["ChiTietHoaDon"];
//khai báo phương thức Add cho ChiTietHoaDon
SPListItem spListItemChiTietHoaDon
= spListChiTietHoaDon.Items.Add();
//thêm Title cho List ChiTietHoaDon trùng với List HoaDon (truongf
hợp Text)
spListItemChiTietHoaDon["Title"]
= itemHoaDon["Title"];
//Khai báo kiểu lookup (chỉ cần lấy ID, tự động lấy được Value để
thêm vào)
SPFieldLookupValue lookup
= new SPFieldLookupValue(Convert.ToInt32(itemHoaDon["ID"]), "");
//thêm vào List ChiTietHoaDon
spListItemChiTietHoaDon["ProductName"]
= lookup;
//Update lại List ChiTietHoaDon
spListItemChiTietHoaDon.Update();
// Thêm vào ChiTietHoaDon1 khi workflow chạy tác vụ thêm
ChiTietHoaDon
//tương tự bên trên
SPList spListChiTietHoaDon1
= web.Lists["ChiTietHoaDon1"];
SPListItem spListItemChiTietHoaDon1
= spListChiTietHoaDon1.Items.Add();
spListItemChiTietHoaDon1["Title"]
= spListItemChiTietHoaDon["Title"];
SPFieldLookupValue lookup1
= new SPFieldLookupValue(Convert.ToInt32(spListItemChiTietHoaDon["ID"]), "");
spListItemChiTietHoaDon1["ProductName"]
= lookup1;
spListItemChiTietHoaDon1.Update();
//gán giá trị cho HistoryDescription và HistoryOutcome khi
workflow hoàn tất
this.historyDes = "Workflow abc";
this.historyOut = "OK";
}
}
- Sau khi hoàn tất ta build
workflow và chạy nó
- Mở Browser
0 comments:
Post a Comment