Jazz Forum Welcome to the Jazz Community Forum Connect and collaborate with IBM Engineering experts and users

CRJAZ0447I SQL statement execution when creating Team Area

Hello

When I try to create a Team Area associated to a Project Area that I create previously with the same code, is giving me the following error

com.ibm.team.repository.common.InternalRepositoryException: CRJAZ0447I SQL statement execution failed.Integrity constraint violation
SQL: INSERT INTO PROCESS.PROCESS_AREA (STATE_ID, ITEM_ID, CONTEXT_ID, MODIFIED, MODIFIED_BY_ITEM_ID, ARCHIVED, NAME, UNIQUE_NAME, PROJECT_AREA_ITEM_ID, PROJECT_AREA_PROCSS_DFNTN_TM_D, PROJECT_AREA_IS_INITIALIZED, PROJECT_AREA_INTERNAL_PUBLIC, PROJECT_AREA_RED_CCSS_LST_TM_D, PRJCT_R_NTRNLPRJCTDVLPMNTLNTMD, PROJECT_AREA_OWNING_APPLICTN_K, PRJCT_R_NTRNL_PRCSS_PRVDR_TM_D, PROJECT_AR_NTRNL_S_PRCSS_PRVDR, JZ_DISCRIMINATOR) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 7)
SQL Exception #1
SQL Message: The statement was aborted because it would have caused a duplicate key value in a unique or primary key constraint or unique index identified by 'PROCESS_AREA_PK6' defined on 'PROCESS_AREA'.
SQL State: 23505
Error Code: 20000
Class: com.ibm.team.repository.service.internal.dataaccess.write2.Row
Item Handle: com.ibm.team.process.internal.common.impl.ProjectAreaImpl@314c314c (stateId: , itemId: , origin: <unset>, immutable: true) (contextId: , modified: 2011-08-22 13:25:38.804, workingCopy: <unset>) (mergePredecessor: null, workingCopyPredecessor: <unset>, workingCopyMergePredecessor: <unset>, predecessor: null) (descSummary: PA example project based on the Scrum project template, archived: false, name: PA - 1314012315370, uniqueName: PA - 1314012315370(JTS-Sentinel-Id)) (isInitialized: false, internalPublic: false, internalVisibleToMembers: true, internalVisibleToAccessList: false, owningApplicationKey: JTS-Sentinel-Id, internalIsProcessProvider: false)

The code used to do that is the following:

IProcessDefinitionHandle processDefinitionHandle = processServerService. findProcessDefinition(SCRUM_PROCESS, null, null);
IProcessDefinition processDefinition = (IProcessDefinition) processDefinitionHandle.getFullState();

// create Project Area
IProjectArea area = (IProjectArea) IProjectArea.ITEM_TYPE.createItem();
String actualProjectName = projectName + " - "
+ System.currentTimeMillis();
area.setName(actualProjectName);
area.setProcessDefinition(processDefinition);
IDescription description = area.getDescription();
description.setSummary(projectName + " example project based on the Scrum project template");
IItemsResponse itemResponse = processServerService
.saveProcessItemWithOverride(area, false);

// create Team Area
ITeamArea teamArea = (ITeamArea) ITeamArea.ITEM_TYPE.createItem();
String actualTeamName = teamName + System.currentTimeMillis();
teamArea.setName(actualTeamName);
teamArea.addMember(getContributor());

area = (IProjectArea) area.getWorkingCopy();
teamArea.setProjectArea(area.getProjectArea());

area.getTeamAreaHierarchy().addRoot(teamArea,
area.getDevelopmentLines());
itemResponse = processServerService
.saveProcessItemsWithOverride(new IProcessItem[] { area, teamArea }, true);

itemResponse = processServerService.initializeProjectArea(area, null);

Can any giveme a clue about that?

Thanks

Amaury

0 votes



2 answers

Permanent link
Hello

When I try to create a Team Area associated to a Project Area that I create previously with the same code, is giving me the following error

com.ibm.team.repository.common.InternalRepositoryException: CRJAZ0447I SQL statement execution failed.Integrity constraint violation
SQL: INSERT INTO PROCESS.PROCESS_AREA (STATE_ID, ITEM_ID, CONTEXT_ID, MODIFIED, MODIFIED_BY_ITEM_ID, ARCHIVED, NAME, UNIQUE_NAME, PROJECT_AREA_ITEM_ID, PROJECT_AREA_PROCSS_DFNTN_TM_D, PROJECT_AREA_IS_INITIALIZED, PROJECT_AREA_INTERNAL_PUBLIC, PROJECT_AREA_RED_CCSS_LST_TM_D, PRJCT_R_NTRNLPRJCTDVLPMNTLNTMD, PROJECT_AREA_OWNING_APPLICTN_K, PRJCT_R_NTRNL_PRCSS_PRVDR_TM_D, PROJECT_AR_NTRNL_S_PRCSS_PRVDR, JZ_DISCRIMINATOR) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 7)
SQL Exception #1
SQL Message: The statement was aborted because it would have caused a duplicate key value in a unique or primary key constraint or unique index identified by 'PROCESS_AREA_PK6' defined on 'PROCESS_AREA'.
SQL State: 23505
Error Code: 20000
Class: com.ibm.team.repository.service.internal.dataaccess.write2.Row
Item Handle: com.ibm.team.process.internal.common.impl.ProjectAreaImpl@314c314c (stateId: , itemId: , origin: <unset>, immutable: true) (contextId: , modified: 2011-08-22 13:25:38.804, workingCopy: <unset>) (mergePredecessor: null, workingCopyPredecessor: <unset>, workingCopyMergePredecessor: <unset>, predecessor: null) (descSummary: PA example project based on the Scrum project template, archived: false, name: PA - 1314012315370, uniqueName: PA - 1314012315370(JTS-Sentinel-Id)) (isInitialized: false, internalPublic: false, internalVisibleToMembers: true, internalVisibleToAccessList: false, owningApplicationKey: JTS-Sentinel-Id, internalIsProcessProvider: false)

The code used to do that is the following:

IProcessDefinitionHandle processDefinitionHandle = processServerService. findProcessDefinition(SCRUM_PROCESS, null, null);
IProcessDefinition processDefinition = (IProcessDefinition) processDefinitionHandle.getFullState();

// create Project Area
IProjectArea area = (IProjectArea) IProjectArea.ITEM_TYPE.createItem();
String actualProjectName = projectName + " - "
+ System.currentTimeMillis();
area.setName(actualProjectName);
area.setProcessDefinition(processDefinition);
IDescription description = area.getDescription();
description.setSummary(projectName + " example project based on the Scrum project template");
IItemsResponse itemResponse = processServerService
.saveProcessItemWithOverride(area, false);

// create Team Area
ITeamArea teamArea = (ITeamArea) ITeamArea.ITEM_TYPE.createItem();
String actualTeamName = teamName + System.currentTimeMillis();
teamArea.setName(actualTeamName);
teamArea.addMember(getContributor());

area = (IProjectArea) area.getWorkingCopy();
teamArea.setProjectArea(area.getProjectArea());

area.getTeamAreaHierarchy().addRoot(teamArea,
area.getDevelopmentLines());
itemResponse = processServerService
.saveProcessItemsWithOverride(new IProcessItem[] { area, teamArea }, true);

itemResponse = processServerService.initializeProjectArea(area, null);

Can any giveme a clue about that?

Thanks

Amaury


Hi,

When you first saved the Project area using
IItemsResponse itemResponse = processServerService
.saveProcessItemWithOverride(area, false);

You should first get the saved project area area = (IProjectArea)itemResponse.getFirstItem(); before you use it to add team area to it

0 votes


Permanent link
 hola, yo tenía el mismo problema. Lo que hice fue:
1. Crear el TimeLine.
2. Buscar el TimeLineCreado y settearlo en la nueva Iteración.
3. Crear la iteración.


/**
* Crear una linea de tiempo (plan).
* @param fechaInicio
*            Fecha inicio TimeLine.
* @param fechaFin
*            Fecha fin TimeLine.
* @param nombre
*            Nombre de TimeLine.
*/
public void crearTimeLines(Date fechaInicio, Date fechaFin, String nombre) {

try {

IProcessItemService service = (IProcessItemService) teamRepository.getClientLibrary(IProcessItemService.class);
IProjectArea projectAreaCopy = (IProjectArea) PROJECT_AREA.getWorkingCopy();

IDevelopmentLine developmentLine = (IDevelopmentLine) IDevelopmentLine.ITEM_TYPE.createItem();
developmentLine.setId(nombre);
developmentLine.setName(nombre);
developmentLine.setProjectArea(projectAreaCopy);
developmentLine.setStartDate(fechaInicio);
developmentLine.setEndDate(fechaFin);

projectAreaCopy.addDevelopmentLine(developmentLine);

IProcessItem[] items = service.save(new IProcessItem[] { projectAreaCopy, developmentLine }, MONITOR);
MONITOR.subTask("[" + developmentLine.getId() + "] creado");

crearIteracion(developmentLine.getId(), "Iteracion1");
crearIteracion(developmentLine.getId(), "Iteracion1");
crearIteracion(developmentLine.getId(), "Iteracion1");

} catch (Exception e) {
e.printStackTrace();
}

}

/**
* Permite crear una iteración y asignarla a una línea de tiempo (plan).
* @param idTimeLine
*            Id de la línea de tiempo a la cual se le va a asignar la iteración.
* @param nombreIteracion
*            Nombre de la iteración.
*/
public void crearIteracion(String idTimeLine, String nombreIteracion) {
try {
IAuditableClient fAuditableClient = (IAuditableClient) teamRepository.getClientLibrary(IAuditableClient.class);
IDevelopmentLineHandle[] devLines = PROJECT_AREA.getDevelopmentLines();
IDevelopmentLine developmentLine = null;
for (IDevelopmentLineHandle developmentLineHandle : devLines) {
developmentLine = fAuditableClient.resolveAuditable(developmentLineHandle, ItemProfile.DEVELOPMENT_LINE_DEFAULT, MONITOR);
if (idTimeLine.equals(developmentLine.getId()))
break;
}

IProcessItemService service = (IProcessItemService) teamRepository.getClientLibrary(IProcessItemService.class);

IIteration newIteration = (IIteration) IIteration.ITEM_TYPE.createItem();
newIteration.setName(nombreIteracion);
newIteration.setId(nombreIteracion + new Date());

IDevelopmentLine workingDevLine = (IDevelopmentLine) developmentLine.getWorkingCopy();
workingDevLine.addIteration((IIterationHandle) newIteration.getItemHandle());

newIteration.setDevelopmentLine(workingDevLine);

service.save(new IProcessItem[] { workingDevLine, newIteration }, MONITOR);
MONITOR.subTask("[" + newIteration.getId() + "] creado");
} catch (Exception e) {
e.printStackTrace();
}
}

0 votes

Your answer

Register or log in to post your answer.

Dashboards and work items are no longer publicly available, so some links may be invalid. We now provide similar information through other means. Learn more here.

Search context
Follow this question

By Email: 

Once you sign in you will be able to subscribe for any updates here.

By RSS:

Answers
Answers and Comments
Question details
× 10,927

Question asked: Aug 22 '11, 9:53 a.m.

Question was seen: 6,507 times

Last updated: Dec 29 '14, 12:24 p.m.

Confirmation Cancel Confirm