Bonjour,

Avant toute chose, j'espère être dans la bonne zone concernant mon problème.

Je viens vers vous parce que je me prend la tête sur un problème avec les API IBM Content Manager 8.3 et impossible de trouver de la documentation pour la version C++ des API, j'espère que l'un d'entre vous connait un peu le sujet (J'espère parce qu'on est pas nombreux en France)

Le but rechercher est d'injecter un document au format DKDDO dans la base de données de Content. Tant que le document se limite à un ICMBASE avec des attributs, tout va bien, j'y arrive, je sais faire.

Le problème survient quand je dois injecter un document contenant un ICMBASE, un ICMNOTELOG et un ICMANNOTATION. Je pense que je ne forme pas proprement le DKDDO avant de l'insérer dans Content Manager.

Voici mon code qui me sert à l'injection :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
for(int i = 0; i < Image; i++)
	{
		pExtFile = GetMimeType(FileNames[i]);
		if(strcmp(pExtFile, "dkparts/dkannotation") == 0)
		{
			printf("ANNOTATIONS %s!\n", FileNames[i]);
			/*try
			{
				part = (DKLobICM *)dsICM->createDDO("ICMANNOTATION", DK_ICM_SEMANTIC_TYPE_ANNOTATION);
				//Est ce pertinent de mettre une mime type? Je ne pense pas !
				//part->setMimeType (GetMimeType(FileNames[i]));
				//Par contre, on doit mettre le contenu dedans
				part->setContentFromClientFile(FileNames[i]);		//Recommande par IBM
			}
			catch(DKException &exc)
			{
				ErrNonI +=1;
 
				fprintf(LogFile, "Erreur Ddo Annotation\n");
				fprintf(stderr, "Erreur Ddo Annotation\n");
				ShowErr(exc);
 
				return(ERR);
			}*/
		}
		else
		{
			if(strcmp(pExtFile,"dkparts/notelog") == 0)
			{
				try
				{
					printf("Notelog %s!\n",FileNames[i]);
					part = (DKLobICM *)dsICM->createDDO("ICMNOTELOG", DK_ICM_SEMANTIC_TYPE_NOTE);
					printf("Contenu !\n");
					part->setContentFromClientFile(FileNames[i]);	
					printf("On a réussi !\n");
				}
				catch(DKException &exc)
				{
					ErrNonI +=1;
 
					fprintf(LogFile, "Erreur Ddo Notelog\n");
					fprintf(stderr, "Erreur Ddo Notelog\n");
					ShowErr(exc);
 
					return(ERR);
				}
			}
			else
			{
				try
				{
					printf("Part %s !\n",FileNames[i]);
					part = (DKLobICM *)dsICM->createDDO("ICMBASE", DK_ICM_SEMANTIC_TYPE_BASE);
					printf("MimeType !\n");
					part->setMimeType (GetMimeType(FileNames[i]));
					printf("Contenu !\n");
					part->setContentFromClientFile(FileNames[i]);		//Recommande par IBM
					printf("On a réussi !\n");
				}
				catch(DKException &exc)
				{
					ErrNonI +=1;
 
					fprintf(LogFile, "Erreur Ddo Basique\n");
					fprintf(stderr, "Erreur Ddo Basique\n");
					ShowErr(exc);
 
					return(ERR);
				}
			}
		}
		try
			{
				dkParts->addElement((dkDataObjectBase*)(DKDDO*)part);
			}
			catch(DKException &exc)
			{
				ErrNonI +=1;
 
				fprintf(LogFile, "Erreur Part\n");
				fprintf(stderr, "Erreur Part\n");
				ShowErr(exc);
 
				return(ERR);
			}
	}
 
 
  try
  {
	printf("Le ddo est pret, on l'ajoute");
    ddo->add();
	printf("Le ddo est OK, on le sauvegarde");
    ddo->update();
  }
  catch (DKException &exc)
  {
    ErrNonI += 1;
 
    fprintf (LogFile, "Erreur Add\n");
    fprintf (stderr,  "Erreur Add\n");
    ShowErr (exc);
 
    return (ERR);
  }
Pour le moment, l'injection de l'annotation n'est pas finit donc commenté, mais même avec un simple Notelog, on part aux fraises.
Actuellement, on finit de le catch suite à l'instruction en erreur ddo->add.

Ma question est donc :
Quelqu'un a-t-il un exemple qui marche d'injection de notelog via les API, et/ou un exemple d'annotation (avec prise en compte des Annotation.ulPart, Annotation.ulPageNumber, Annotation.usX, Annotation.usY)?
Quelqu'un aurait-il réussi à dénicher la documentation C++ des API sur le site d'IBM, ou celle-ci sont perdu corps et bien?

Je vous remercie d'avance de vos suggestions.