Epígrafe
"Se eu colocasse os lábios de Nikanor Ivanovich no nariz de Ivan Kuzmich, levasse alguma arrogância como a de Baltazar Baltazarych e, talvez, acrescentasse mais a adversidade de Ivan Pavlovich a isso, eu decidi imediatamente". N.V. Gogol. Casar.

Existem duas ferramentas de gerenciamento de projetos bem conhecidas e muito diferentes: MS Project e Redmine. Cada um deles tem seus próprios méritos, e esses méritos poderiam se complementar perfeitamente.
Quero chamar a atenção de um pequeno utilitário chamado P2R, que permite sem instalação e com um mínimo de configurações garantir a sincronização on-line de projetos no MS Project e Redmine. Está disponível em .
Que bom é o projeto:
- É conveniente editar o projeto como um todo no modo de documento - uma planilha. Também é uma vantagem que vários projetos possam ser rapidamente combinados em um consolidado e visualizados como um todo. (No Redmine, as tarefas do projeto são editadas apenas uma por vez no formulário da tarefa).
- Todos os tipos de variedade e flexibilidade de conexões entre tarefas (no Redmine, as comunicações são implementadas de forma minimalista).
- Monitorar o carregamento de recursos e a capacidade de distribuir tarefas automaticamente em um calendário, levando em consideração os relacionamentos e o carregamento de recursos. Incluindo recursos "desumanos", como equipamentos, instalações etc. (Não há nada disso no Redmine; a ferramenta foi criada para outro.)
O que é bom no Redmine:
- Um produto gratuito no Ruby On Rails, bastante simples, bem personalizável e extensível, com uma comunidade ativa, uma grande variedade de plugins, desenvolvidos ativamente
- Web e trabalho em equipe. Como resultado, é muito conveniente registrar o progresso de cada tarefa, incluindo o log de alterações, correspondência e discussões sobre a tarefa, arquivos, relatórios individuais sobre as horas gastas etc. (Não há nada disso no Project.)
Seria conveniente preparar projetos no MS Project, enviá-los para execução no Redmine, obter os termos reais das tarefas e as horas estimadas / passadas a partir daí, compará-los com a linha de base salva anteriormente, fazendo ajustes, se necessário. (É especialmente conveniente, por exemplo, em uma situação como a nossa no trabalho: há um fluxo de projetos com uma estrutura regular, que deve ser formada de acordo com modelos, ligeiramente especificados e dados para o trabalho.)
Existem plugins Rredmine para essa integração. Mas eles fazem integração através do upload e download de arquivos xml, mas eu quero isso sem arquivos e mais fácil.
O script P2R proposto é escrito em ruby e funciona com o MS Project via OLE e com o Redfmine pela API. Se o ruby não estiver instalado, você poderá usar o mesmo script compilado em .exe (ele está na pasta de downloads, gerada pelo utilitário ocra).
A preparação de um projeto MSP para publicação e sincronização requer um mínimo de ação.
- O P2R armazena identificadores de tarefa Redmine no atributo Hyperlink das tarefas MSP. Para marcar uma tarefa para publicação, você precisa colocar 0 nesse atributo. Após a publicação, o P2R alterará automaticamente esse campo para o ID da tarefa real e, ao mesmo tempo, gerará a URL correta no atributo HyperlinkAddress, para que o link seja clicável. (Obviamente, não se esqueça de salvar o projeto MSP, ele não será salvo automaticamente.)
- O P2R também armazena IDs de usuário Redmine no atributo "Hiperlink" dos recursos MSP. Para associar esse recurso a um usuário Redmine, você precisa encontrar o ID do usuário no administrador do Redmine. (O administrador tem acesso à lista de usuários e pode ver seu ID, por exemplo, nos links da lista).
- O P2R pega os parâmetros de acesso no Redmine a partir de uma tarefa especial chamada “Sincronização do Redmine”. Você precisa criar uma tarefa e colocar os parâmetros de acesso no campo "Notas" no formato YAML de acordo com a amostra (os valores dos parâmetros, é claro, devem ser substituídos pelos seus):
redmine_host: 192.168.10.10 redmine_port: 3000 redmine_api_key: a21e583e7670b1fc79378441d485b9608e4c2dc4c redmine_project_uuid: test task_default_redmine_tracker_id: 4 resource_default_redmine_role_id: 4
Depois disso, o projeto está pronto para sincronização. A finalidade dos parâmetros é clara em seus nomes.
O parâmetro redmine_project_uuid
contém um código de projeto exclusivo que deve ser inventado de acordo com as regras do Redmine, que podem ser encontradas na página de configurações de qualquer projeto. Se ocorrer um erro de "Entrada não processável" ao criar um projeto, provavelmente você selecionou o uuid incorreto do projeto.
O parâmetro task_default_redmine_tracker_id
opcional. Se você omitir, a faixa padrão das configurações do Redmine será aposta.
Se você não deseja criar um novo projeto no Redmine, mas conectar um existente, faça o seguinte:
- Adicione o parâmetro
redmine_project_id
às configurações de sincronização do Redmine e coloque o ID do projeto Redmine redmine_project_id
não é uuid! Esse número inteiro é o ID da entrada no banco de dados Redmine. Você pode encontrar esse ID, por exemplo, no cartão do projeto no formato XML ou JSON (no exemplo acima, você pode obtê-lo em http://192.168.10.10/10000000/projects/test.json ). - Para que as tarefas sejam sincronizadas com as existentes no Redmine, coloque no campo Hyperlink não seus zeros, mas seus IDs reais do Redmine.
Há uma pequena restrição na atribuição de recursos a uma tarefa:
- Como apenas um executor pode ser atribuído a uma tarefa no Redmine, o script irá xingar e parar quando encontrar mais de um recurso na tarefa MSP marcada para sincronização. (1) É possível que em versões futuras esse comportamento seja substituído por um comportamento mais moderado, como emitir um aviso e escolher aleatoriamente um deles. (2) Os recursos que não são sincronizados podem ser atribuídos quantos você desejar, o P2R os ignora.
O seguinte algoritmo de sincronização é implementado:
- O nome da tarefa, a estrutura de subordinação e a pessoa responsável têm precedência no lado MSP, ou seja, eles precisam ser editados no MS Project, e as alterações irão para o Redmine durante a sincronização.
- O início da tarefa, o fim, os custos de mão-de-obra (avaliação e reais) têm prioridade no lado do Redmine e vão para o MSP durante a sincronização.
Há também um problema com os custos da mão-de-obra: no MSP, a estimativa dos custos da mão-de-obra, os custos reais da mão-de-obra e a porcentagem de conclusão são fortemente conectados pela fórmula, enquanto no Redmine são definidos de forma independente. Ou seja, eles o avaliaram em 10 horas, passaram 40 horas e, ao mesmo tempo, concluíram a tarefa em 30%. Isso acontece na vida, e Redmine não se importa. A solução escolhida é:
- Os custos reais são sempre escritos como estão
- Se os custos reais forem maiores que a estimativa e a porcentagem de conclusão for 0, ignore a estimativa
- Se os custos reais forem maiores que a estimativa e a porcentagem de conclusão não for 0, calcularemos uma nova estimativa com base no fato e na porcentagem de conclusão.
No total, o processo de sincronização é assim:
- Abrimos nosso projeto no MS Project e o deixamos ativo.
- Se quisermos, iniciaremos a execução ociosa do P2R e veremos quais serão as mudanças.
- Iniciamos a sincronização real: com a opção –e.
O diretório de trabalho a partir do qual o script é iniciado não importa.
Você pode iniciar o script por timer e a sincronização se tornará completamente automática.
Obrigado pela atenção.