iT邦幫忙

DAY 12
3

Kuick Hands on Labs系列 第 12

Kuick Hands on Labs -- 12. 後台內建資料

  • 分享至 

  • xImage
  •  

系統總會有一些內建資料,如果可以依據程式邏輯自動建立,這將可以有效避免部署的錯誤。Kuick系統生命周期,可以在啟動的不同步驟裡自動執行特定程式,我們將使用這個機制自動維護後台系統管理者的帳號資料。
引用 Kuick 開發的系統,只要有實作 Kuick.IStart 介面的類別,在系統完成啟動前必定會被執行,我們就藉這個機制進行後台內建的資料初始化。

首先,在 Kuick.Labs.IronMan6 類別庫裡新增實作 IStart 的類別 IronMan6Start。

// IStart 介面
public interface IStart
{
	// 系統啟動執行功能
 
	// 1. 系統啟動前
	void DoPreStart(object sender, EventArgs e);
	// 2. 內建服務啟動
	void DoBuiltinStart(object sender, EventArgs e);
	// 3. 資料庫啟動前
	void DoPreDatabaseStart(object sender, EventArgs e);
	// 4. 資料庫啟動
	void DoDatabaseStart(object sender, EventArgs e);
	// 5. 資料庫啟動後
	void DoPostDatabaseStart(object sender, EventArgs e);
	// 6. 系統啟動後
	void DoPostStart(object sender, EventArgs e);
 
	// 系統終結執行功能
 
	// 1. 系統啟動前
	void DoBuiltinTerminate(object sender, EventArgs e);
	// 2. 系統啟動前
	void DoPostTerminate(object sender, EventArgs e);
}

系統需要自動建立1個管理者角色 (manager)、1個管理人員 (admin),並且將 admin 加入 manager 裡。所以在 DoPostDatabaseStart 的方法裡實作以下程式:

public void DoPostDatabaseStart(object sender, EventArgs e)
{
	string ADMIN = "admin";
	string MANAGER = "manager";
 
	Result result = null;
 
	// EmployeeEntity
	// 員工 admin
	EmployeeEntity admin = EmployeeEntity.Get(ADMIN);
	if(null == admin) {
		admin = new EmployeeEntity();
		admin.EmployeeID = ADMIN;
		admin.Password = "IronMan6";
		admin.FullName = "管理者";
		result = admin.Add();
		if(!result.Success) {
			Logger.Error(result);
			throw new KException("員工資料設定錯誤", result);
		}
	}
 
	// RoleEntity
	// 管理者角色 manager
	RoleEntity manager = RoleEntity.Get(MANAGER);
	if(null == manager) {
		manager = new RoleEntity();
		manager.RoleID = MANAGER;
		manager.Name = "管理者角色";
		result = manager.Add();
		if(!result.Success) {
			Logger.Error(result);
			throw new KException("管理者角色設定錯誤", result);
		}
	}
 
	// 員工 admin 屬於 manager 管理者角色成員
	if(!admin.Mapping<RoleEntity>().Exists(MANAGER)) {
		result = admin.Mapping<RoleEntity>().Add(MANAGER);
		if(!result.Success) {
			Logger.Error(result);
			throw new KException("角色成員設定錯誤", result);
		}
	}
}

為了避免重複建立資料,所以都會在判定該筆資料不存在的時候才新增,最後利用 Kuick.Builtin.Mapping 服務,建立 admin 與 manager 的關係。


上一篇
Kuick Hands on Labs -- 11. 打造共用的「後台網站」
下一篇
Kuick Hands on Labs -- 13. 網站身分驗證
系列文
Kuick Hands on Labs30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言