Pregunta

Tengo una base de datos de ClearQuest con un tipo de registro llamado "BuildSheet". En un registro BuildSheet, puede adjuntar tareas que son otro tipo de registro.

pensé que podría crear un tipo de registro de tarea, a través del método Sesión BuildEntity, y luego hacer un método Sesión EditEntity en el registro BuildSheet, y agregue el campo ID de tarea a través del método Entidad AddFieldValue.

Por desgracia, mi intento de crear el registro de Tipo falla. Se pone tropezó por la declaración eval:

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

El eval está fallando cuando intento crear el registro TASK_RECORD_TYPE. Me sale el siguiente mensaje de error:

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

Ahora, puede abrir un registro BuildSheet, entra en la etiqueta de registro hijo, haga clic en Crear y construir mi registro de tarea de esa manera, lo que al parecer yo no tiene permiso.

Lo que parece es que debo de alguna manera asociar el registro de "tareas" con un "BuildSheet" antes de tratar de crearlo, pero ¿cómo?

¿Fue útil?

Solución

He encontrado el culpable. Tienen un gancho en el método BuildEntity con el fin de garantizar que el registro de tareas que estoy tratando de crear está conectado a un registro padre. Estúpida * # * @ # $ & @.

De todos modos he encontrado el script gancho (escrito en VB) y encontré en el que estaban tratando de hacerme tropezar:

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

Para evitar esto, me puse ParentBuildSheetID con el método SetNameValue antes he tratado de crear el registro:

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

Ahora, que funcionó!

Otros consejos

No, no creo que usted tiene que asociar el registro de tareas con la BuildSheet como se llama a BuildEntity.

Se puede llamar GetSubmitEntityDefNames y verificar que la "tarea" es en sus resultados?

http://www.ibm.com/developerworks/forums/ thread.jspa? threadID = 179429 tiene el ejemplo más cercano que veo a lo que está tratando de hacer. Si es así, una vez que pasas el problema BuildEntity, en lugar de:

a continuación, hacer un método EditEntity sesión en el registro BuildSheet, y agregue el campo ID de tarea a través del método AddFieldValue Entidad.

que desea establecer el campo relación correcta en su nueva tarea a la identificación BuildSheet antes Comprometerse en lugar de establecer el identificador de tarea en el registro BuildSheet.

Espero que esto ayude; No he tenido que usar ClearQuest en más de una década, por lo que sólo voy por lo que dice la (demasiado escasa) documentación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top