קוגנוס הינו כלי BI אשר נועד להציג נתונים ולא להזין נתונים, למרות זאת אציג דוגמא לטופס הזנת נתונים שנבנה בקוגנוס ואסביר את השלבים ליצירתו.
הדוגמא המוצגת הינה טופס הכנסת או עדכון באגים במערכת:
יש להזין את מספר הבאג, תיאור, פרטים, מערכת הפעלה, סוג הדפדפן, חומרת הבעיה, מי מטפל והאם הבעיה טופלה או לא.
על מנת ליצור את הטופס הנ"ל אנו צריכים לבנות פרוצדורה שמקבלת את כל הפרמטרים לעיל, הפרוצדורה בודקת האם יש צורך בעדכון (היינו קיים באג באותו המספר) או בהכנסת באג חדש.
CREATE PROCEDURE [dbo].[uspInsertBug]
@BugNum int=0,
@BugLocation varchar(255)=null,
@BugDetails varchar(255)=null,
@BugOS varchar(255)=null,
@BugBrowser varchar(255)=null,
@BugAssignTo varchar(255)=null,
@BugSeverity varchar(255)=null,
@BugFix varchar(255)=null
AS
BEGIN
SET NOCOUNT ON;
-- check if this is a new bug
if ((select count(*) from [dbo].[Bug] where [bugNumber]=@BugNum)=0)
begin
insert into [dbo].[Bug]
values(@BugNum, @BugLocation ,@BugDetails,@BugOS, @BugBrowser, @BugAssignTo,@BugSeverity, @BugFix, GETDATE() )
end
else
begin
update [dbo].[Bug]
set [bugNumber] =@BugNum , [bugLocation] =@BugLocation,
[bugDetails] = @BugDetails, [bugOS] = @BugOS,
[bugBrowser] = @BugBrowser, [bugAssignTo] = @BugAssignTo, [bugSeverity] = @BugSeverity, [bugFixed] = @BugFix ,[bugDate] = GETDATE()
where [bugNumber]=@BugNum
end
select * from [dbo].[Bug]
END
על מנת שנוכל להשתמש בפרוצדורה בקוגנוס אנו חייבים להחזיר ערך, בדוגמא לעיל אנו מחזירים את כל הטבלה.
כעת נפתח מודל ב-FM ונבחר בפרוצדורה:
לאחר שייבאנו את הפרודצורה נלחץ על הQuery Subject וייפתח לנו חלון של Query Subject Definition, כל הפרמטרים שהגדרנו בפרודצורה יוצגו ואנו נבנה להם macro עם ערכי ברירת מחדל:
עבור מספר הבאג נבנה את הmacro הבא:
#prompt('BugNum','integer','0')#
כאשר BugNum יהיה שם הפרמטר.
עבור שאר הערכים נבנה macros בצורה הבאה:
#prompt('parameterName','string','n/a')#
OR
#prompt('parameterName','token','n/a')#
נוסיף למודל טבלה שמכילה מספרי באגים, בדוגמא שלי מ-1 עד 20, וטבלה שמחזיקה את כל הבאגים.
נפתח Report Studio ונבנה טופס שבנוי מסוגים שונים של prompt boxes: עבור ערכים המוזנים בצורה חופשית נשתמש ב- text box ועבור ערכים המוזנים מרשימה סגורה נבנה value list.
נוסיף לטופס List שמכיל את השדות של הפרוצדורה וכפתור לרענון הדוח לאחר הזנת הנתונים.
כעת נבנה דוח נוסף שיכיל טבלה עם כל הבאגים הקיימים על מנת שנוכל לעדכן באגים קיימים ו/או להוסיף באגים חדשים:
כאשר נלחץ על מספר באג יפתח החלון הבא:
עם כל הערכים עבור הבאג בו בחרנו, ונוכל לבצע עדכון. אם נלחץ על Add New Bug יפתח לנו הטופס ללא ערכים.
על מנת לבצע זאת אנו מוסיפים Report Expression לפני מספר הבאג וhtml item אחריו וכדי שהטופס ייפתח לנו באותו הדוח אנו מוסיפים iframe לדוח:
ב-Report Expression אנו כותבים את הביטוי הבא:
a style="POSITION: relative" href="http://linur-pc/ibmcognos1021/cgi-bin/cognos.cgi?b_action=cognosViewer&ui.action=run&run.prompt=false&p_BugNum='+number2string([Bug].[#Bug])+'&p_BugLocation='+[Bug].[Location]+'&p_BugDetails='+[Bug].[Details]+'&p_BugOS='+[Bug].[OS]+'&p_BugBrowser='+[Bug].[Browser]+'&p_BugSeverity='+[Bug].[Severity]+'&p_BugAssignTo='+[Bug].[Assign To]+'&p_BugFix='+[Bug].[Fixed]+'&cv.header=false&cv.toolbar=false&ui.object=storeID('+'''i251E0C3D459049CD939BD89300F1B023'''+')"'+' target="iframe1"
כאשר הStoreID הינו המספר של הדוח שבנינו בהתחלה, טופס הזנת הנתונים, ואנו מעבירים את הdataitems כפרמטרים.
על מנת לפתוח טופס חדש אנו כותבים ביטוי זהה לעיל רק ללא העברת פרמטרים:
a style="POSITION: relative" href="http://linur-pc/ibmcognos1021/cgi-bin/cognos.cgi?b_action=cognosViewer&ui.action=run&run.prompt=false&cv.header=false&cv.toolbar=false&ui.object=storeID('+'''i251E0C3D459049CD939BD89300F1B023'''+')"'+' target="iframe1"
אנו מורים לדוח להיפתח ב-iframe1 אשר מוגדר בצורה הבאה:
iframe id='iframe1' name='iframe1' src='' align='left' height='450cm' width='500cm' frameBorder='0'
/iframe
מצורפים למאמר קובץ deployment המכיל את המודל ואת הדוחות, קובץ של מודל הfm וה-database של הבאגים.
בהצלחה J