2010-12-23 92 views
1

我有一個名爲「BuildSheet」的記錄類型的ClearQuest數據庫。在BuildSheet記錄上,可以附加另一種記錄類型的任務。ClearQuest Perl API - 將子記錄添加到另一個記錄

我以爲我可以創建任務記錄類型,通過BuildEntity會話方法,那麼做的BuildSheet記錄一個EditEntity會話方法,並通過AddFieldValue實體方法添加任務ID字段。

不幸的是,我嘗試創建Type記錄失敗。它得到由eval聲明跳閘:當我試圖創建TASK_RECORD_TYPE記錄

# 
# Now Create the Record Type and Fill in the Fields 
# 
my $record; 
eval { $record = $cq->BuildEntity(TASK_RECORD_TYPE); }; 
if ([email protected]) { 
    croak qq(Error when attempting to create record type ") 
    . TASK_RECORD_TYPE . qq("\[email protected]\n); 
} 
if (not $record) { 
    die qq(Cannot create entity ") . TASK_RECORD_TYPE . qq("\n); 
} 

的EVAL失敗。我收到以下錯誤信息:

Error when attempting to create record type "Task" 
Permission denied for user WeintraubH to perform action Create (of type SUBMIT) 
at D:/Program Files/Rational/Common/lib/perl5/site_perl/5.8.6/CQPerlExt.pm line 43. 
    at H:\svn\addTask.cqpl line 340 
    main::createTask('TASK', 'cm', 'HEADLINE', 
     'FMS-CWA_APP_B35_HF276', 'DESCRIPTION', 'FMS-CWA_APP_B35_HF276', 
     'PRIORITY', 2, 'EFFORT', ...) called at H:\svn\addTask.cqpl line 236 

現在,我可以彈出一個BuildSheet記錄,進入子記錄標籤,單擊創建和建立我的任務記錄這種方式,所以顯然我有許可。

看來是我試圖創建它之前必須以某種方式將「任務」記錄與「BuildSheet」關聯起來,但是怎麼做?

回答

1

我發現了罪魁禍首。他們在BuildEntity方法上有一個鉤子,以確保我嘗試創建的任務記錄連接到父記錄。愚蠢的*#@#* * $ & @。

反正我發現鉤子腳本(VB編寫的),發現在那裏他們試圖絆倒了我,讓

Set oSession = GetSession 

pRequestIDValue = oSession.NameValue("ParentRequestID") 
pTaskIDValue = oSession.NameValue("ParentTaskID") 
pBuildSheetIDValue = oSession.NameValue("ParentBuildSheetID") 
NewTaskPermittedValue = oSession.NameValue("NewTaskPermitted")  

curUser = oSession.GetUserLoginName 

if (pBuildSheetIDValue <> "") or (pTaskIDValue <> "") _ 
    or ((pRequestIDValue <> "") and (NewTaskPermittedValue = "Yes")) then 
    task_AccessControl = TRUE 
else 
    task_AccessControl = FALSE      
end if 

要解決這個問題,我設置ParentBuildSheetIDSetNameValue方法之前,我試圖創建備案:

$cq->SetNameValue("ParentBuildSheetID", $buildsheetId); 
my $record; 
eval { $record = $cq->BuildEntity(TASK_RECORD_TYPE); }; 
if ([email protected]) { 
    croak qq(Error when attempting to create record type ") 
    . TASK_RECORD_TYPE . qq("\[email protected]\n); 
} 
if (not $record) { 
    die qq(Cannot create entity ") . TASK_RECORD_TYPE . qq("\n); 
} 

現在,工作!

+0

我對CQ鉤子一無所知,但是你能否輕輕地建議他們在驗證或提交時掛鉤(假設這是可能的)。 – ysth 2010-12-28 21:03:58

0

不,我不認爲你必須將任務記錄與BuildSheet關聯起來,因爲你調用了BuildEntity。

你可以調用GetSubmitEntityDefNames並驗證「Task」是否在其結果中?

http://www.ibm.com/developerworks/forums/thread.jspa?threadID=179429是我看到你正在嘗試做的最接近的例子。如果是這樣,一旦你過去的BuildEntity問題,而不是:

然後做在BuildSheet記錄一個EditEntity會話方法,並通過AddFieldValue實體方法添加任務ID字段。

您希望在新建任務之前將正確的關係字段設置爲Build之前的BuildSheet Id,而不是在BuildSheet記錄上設置Task ID。

我希望這有助於;我已經有十多年沒有使用過ClearQuest了,所以我只是按照文檔所說的(太少)。

+0

自從我使用ClearQuest或ClearCase已經過去了十多年。我曾希望兩人都死於一場暴力而痛苦的死亡,並且有這個悲劇事件的錄像帶,所以我可以觀看它。不是我很苦。但是,在這裏,我在另一個CC/CQ商店,這意味着我已經死了,並且下地獄。 – 2010-12-28 19:04:16

相關問題