Para quem ainda não conhece, o TC Tracker é um dos módulos do Team Coherence (veja mais sobre o TC neste post). Ele é responsável pela gerência de requisições e bugs.
O próprio cliente do TC já oferece uma interface muito agradável e prática para trabalhar com o Tracker. No entanto, também está disponível uma API que implementa (ou melhor, disponibiliza, pois faz chamas às rotinas nativas) todas as funcionalidades que existem no servidor do TC. Desta forma, é possível criar um sistema de controle de requisições e bugs de acordo com as necessidades do usuário.
Esta API é escrita em Delphi e, como dito anteriormente, faz chamadas às rotinas nativas utilizando stdcall. O download é gratuito e pode ser feito aqui.
Para utilizá-la, basta fazer o download, descompactar e copiar os .pas para o diretório com os fontes do projeto. Abaixo segue um exemplo bem simples que mostra como conectar no servidor do TC e listar os projetos cadastrados:
1 procedure TfrmPrincipal.btnGoClick(Sender: TObject);
2 var
3 conn,
4 user: string;
5 connected: boolean;
6 result: integer;
7 begin
8 try
9 result := TrkConnect('Local', 'Marcos', 'xxxxx');
10 if (result <> Err_OK) then
11 ShowMessage('Erro ao conectar: ' + IntToStr(result));
12
13 cdsProjetos.EmptyDataSet;
14 result := TrkEnumProjects(AdicionaProjeto, cdsProjetos);
15 if (result <> Err_OK) then
16 ShowMessage('Erro ao listar os projetos: ' +
17 IntToStr(result))
18 finally
19 TrkCurrentConnection(conn, user, connected);
20 if (connected) then
21 begin
22 result := TrkDisconnect;
23 if (result <> Err_OK) then
24 ShowMessage('Erro ao desconectar: ' + IntToStr(result));
25 end;
26 end;
27 end;
Na linha 9, faço uma chamada à função TrkConnect passando o nome da conexão, usuário e senha.
Na linha 14, chamo a função TrkEnumProjects para retornar todos os projetos cadastrados. Ela recebe dois parâmetros: uma função que trata o que será feito com cada projeto retornado e um ponteiro para alguma informação extra, neste caso, um DataSet. A rotina que passei como parâmetro deve seguir a seguinte assinatura:
1 function (data: Pointer; name: string; id: Cardinal): boolean;
Sua implementação simplesmente adiciona o projeto em questão ao DataSet e retorna true para continuar o processo:
1 function AdicionaProjeto(data: Pointer; name:
2 string; id: Cardinal): boolean;
3 begin
4 TClientDataSet(data).Append;
5 TClientDataSet(data).FieldByName('id').AsInteger := id;
6 TClientDataSet(data).FieldByName('name').AsString := name;
7 TClientDataSet(data).Post;
8
9 Result := true;
10 end;
O resultado final é apresentado abaixo:

Existem várias outras rotinas disponíveis para acessar o TC Tracker. Todas elas bem documentadas e de fácil uso. Além disso, também está disponível uma API para acessar o controle de versão (Version Manager). O download desta pode ser feito aqui.
É isso ai. T+