星期二, 1月 26, 2016

規格:XA 軟體申請表

下表為我們預估excel內容:
申請單號
applyid
nvarchar(30)
電腦名稱
uuid
int
使用者帳號
userid
int
軟體集名稱
swgroupid
int
授權方式
swgrouplictype
int
移轉前使用者帳號
transferreduserid
int
系統處理方式
類型
type
int


FA-201506-0001
PC1

NOD32
Device

+
1

FA-201506-0002
PC2

OFFICE 365
Concurrent

+
1

FA-201506-0003

User1
AutoCAD
Named-User

+
1->0

FA-201506-0004

User2
AutoCAD
Named-User

+
1->0

FA-201506-0005

User3
AutoCAD
Named-User

+
1->0

FA-201506-0006
send-back
User1
AutoCAD
Named-User

警示 -
2

FA-201506-0007
keep
User2
AutoCAD
Named-User

警示 -
2

FA-201506-0008
send-back

NOD32
Device

警示
2

FA-201506-0009
keep

NOD32
Device

警示
2

FA-201506-0010
send-back

OFFICE 365
Concurrent

警示
2

FA-201506-0011
keep

OFFICE 365
Concurrent

警示
2

FA-201506-0012

User4
AutoCAD
Named-User
User3
-          +
1

FA-201506-0013
PC3
NOD32
Device
User3
+
1

FA-201506-0014
PC4
OFFICE 365
Concurrent
User3
+
1


說明:
1.      電腦名稱為send-backkeep時,表示為要將Named-User授權類型、使用者名稱及軟體集名稱符合的內容做停用的動作。在此注意一定要有上述3個欄位,並且不會處理DeviceConcurrent(因為電腦名稱欄位已被佔用)
2.      移轉前使用者名稱若有內容,表示該使用者的軟體集名稱(授權類型)要停用。在此注意一定要有軟體集名稱及授權類型欄位內容,因為要比對停用,並且不會處理DeviceConcurrent(因為沒有移轉前的電腦名稱)
3.      停用的意義指的是,將該使用者的軟體集名稱(授權類型)設為非法,並且該使用者未來不佔用授權數~ 另外符號+代表加資料並配置合法;符號-代表停用資料;警示代表寄出電腦名稱比對不到的警示

軟體申請表處理警示:
Eventnotification資料表event='36'

DB定義:
swapplication軟體申請表
id
int
流水號,會自動遞增
applyid
nvarchar(30)
申請單號
pcname
nvarchar(33)
電腦名稱
username
nvarchar(128)
使用者帳號
swgroup
nvarchar(64)
軟體集名稱
swversion
nvarchar(255)
軟體版本
swgrouplictypename
nvarchar(30)
授權方式
transferredusername
nvarchar(128)
移轉前使用者帳號
logdate
datetime
處理日期
uuid
nchar(36)
電腦ID;電腦名稱去比對pc資料表pcname來取得uuid-1代表send-back-2代表keep
userid
int 
使用者ID;使用者名稱去比對usertable資料表username來取得userid
swgroupid
int   
使用者ID;使用者名稱去比對usertable資料表username來取得userid
swgrouplictype
int   
授權方式ID1Device; 2Concurrent; 3表示Named-User
transferreduserid
int
移轉前使用者ID;表示移轉前使用者名稱去比對usertable資料表username來取得userid
type
int
請見底下Type值定義說明
backup1
nvarchar(255)
備用1欄位(字串)
backup2
nvarchar(255)
備用2欄位(字串)
backup3
nvarchar(255)
備用3欄位(字串)
backup4
nvarchar(255)
備用4欄位(字串)
backup5
nvarchar(255)
備用5欄位(字串)
backup1_num
int
備用1欄位(整數)
backup2_num
int
備用2欄位(整數)
backup3_num
int
備用3欄位(整數)
backup4_num
int
備用4欄位(整數)
backup5_num
int
備用5欄位(整數)
backup1_checkbox
int
備用1欄位(布林)
backup2_checkbox
int
備用2欄位(布林)
backup3_checkbox
int
備用3欄位(布林)
backup4_checkbox
int
備用4欄位(布林)
backup5_checkbox
int
備用5欄位(布林)
backup1_date
datetime
備用1欄位(日期時間)
backup2_date
datetime
備用2欄位(日期時間)
backup3_date
datetime
備用3欄位(日期時間)
backup4_date
datetime
備用4欄位(日期時間)
backup5_date
datetime
備用5欄位(日期時間)


swgroup軟體集表
lictype
int
授權方式:1代表Device2代表Concurrent3代表Named-User è此為新增的欄位


registry資料表
key   value新增如下,共三筆:
key= SwApplicationCsvActive value=       è軟體申請表的csv處理的總開關;1代表啟動排程 0代表關閉排程
key= SwApplicationCsvSchedule value= è軟體申請表的csv的排程設定,按照Cron來設定,可以每天設定在某些整點小時去執行。(6點執行一次,10點執行一次,17點執行一次)
key= SwApplicationCsvSourcePath value=     è軟體申請表的csv來源路徑
key= SwApplicationCsvCompletedPath value=       è軟體申請表的csv處理完成路徑


二個stored procedure
1.      sp_ProcessSwApplication 功能是處理Local Temp Table內的資料(csv過來),成功時將資料填入至swapplication資料表,並將處理結果填入至Temp Tableresult欄位上
呼叫方式請參考範例1
Type值定義說明
/*掃描所有暫時資料表(#Temp_SwApp)資料*/
/*
Server在處理csv結果,若是<=100都是代表成功的資料,>100則表示是失敗的資料。另外23要強制寄出警示信~
Server 若處理的檔案內只要有一筆失敗的狀態,寄給管理者,但是有23的話也是要寄出給管理者
Console在軟體申請表<=100都是顯示'成功'>100則顯示'失敗:????'
ConsoleNamed-User設定則是過濾(0,1,4,5,6,13),並且0,4顯示'停用'1,5顯示'啟用'6顯示'對應不到軟體集'13顯示'授權不足,已停用'
代號
顯示訊息
實際系統操作
備註
0
成功
停用

1
成功
啟用

2
成功
警告send-back

3
成功
User1

4
成功
警告keep

5
成功
手動停用

6
成功
手動啟用



對應不到軟體集

11
成功
已手動刪除
Console去刪除Name-User的項目
12
成功
更新Named-User為啟用
csv有重覆的Named-User為停用時,會將它變更為啟用
13
成功
授權不足,已停用
針對Name-User有可能後來才安裝電腦軟體,造成授權不足




101
失敗: 申請單號為空
申請單號為空

102
失敗: 授權方式要為限定字串(DeviceConcurrentNamed-User)
授權方式要為限定字串(DeviceConcurrentNamed-User)

103
失敗: 找不到電腦名稱
找不到電腦名稱

104
失敗: 找不到使用者帳號
找不到使用者帳號

105
失敗: 找不到移轉前使用者帳號
找不到移轉前使用者帳號

106
失敗: 找不到軟體集名稱
找不到軟體集名稱

107
失敗: 軟體集非版權軟體
軟體集非版權軟體

108
失敗: 授權方式與之前設定的不相同
授權方式與之前設定的不相同

109
失敗: Named-User資料重覆
Named-User資料重覆

110
失敗: 軟體集不能在買高裝低的群組內
軟體集不能在買高裝低的群組內

111
失敗: 電腦尚未安裝軟體集內任何軟體
電腦尚未安裝軟體集內任何軟體

112
失敗: 使用keepsend-back停用時,無法找到對應的使用者帳號
使用keepsend-back停用時,無法找到對應的使用者帳號

113
失敗: 使用keepsend-back停用時,該使用者帳號原來已經停用
使用keepsend-back停用時,該使用者帳號原來已經停用





201
失敗: Device授權數量不足
Device授權數量不足

202
失敗: Named-User授權數量不足
Named-User授權數量不足

203
失敗: keep: Named-User授權數量不足
keep: Named-User授權數量不足






2.      sp_ProcessSwLegal功能是當使用者切換時,呼叫此sp(傳入電腦的uuid),可以將該電腦的Named-User 類型的軟體集做重新設定合非法的功能
呼叫方式請參考範例2


==============================
範例1
IF object_ID('tempdb..#Temp_SwApp') is not null
DROP TABLE #Temp_SwApp

CREATE TABLE #Temp_SwApp(
id int IDENTITY(1,1),
applyid nvarchar(30),
pcname nvarchar(33),
username nvarchar(128),
swgroup nvarchar(64),
swversion nvarchar(255),
swgrouplictype nvarchar(30),
transferredusername nvarchar(128),
reapplyid int,
result int
);
GO

INSERT INTO #Temp_SwApp (applyid, pcname, username, swgroup, swversion, swgrouplictype, transferredusername,reapplyid)  --Server reapplyid 一律填NULL
VALUES ('FA-201506-0001', 'WIN-2K8R2_CCW', NULL, N'作業系統', '5.1.0.0', N' Device', NULL, NULL);
GO
INSERT INTO #Temp_SwApp (applyid, pcname, username, swgroup, swversion, swgrouplictype, transferredusername,reapplyid)
VALUES ('FA-201506-0002', 'WIN-2K8R2_CCW', NULL, N'NOD32', '5.1.0.0', N' Device', NULL, NULL);
GO

sp_ProcessSwApplication;
GO--記得自行將#Temp_SwApp刪除


=============================
範例2
DECLARE @o int;
EXEC sp_ProcessSwLegal @uuid='A7522CC3-395A-4F1B-BD94-097C83DD957A',@iResult=@o output;

@iResult回傳值的內容如下:
1=成功
201=Device授權數量不足
202=Named-User授權數量不足
203=keep授權數量不足