4.9_禅道集成说明
1.禅道是DevOps5.5版本新增的项目管理服务器类别,我们选择集成的流程为项目-迭代流程,因存在不兼容的概念,会导致一些潜在的问题,具体说明如下:
a)关于集成方式,经研究禅道api存在一些无法解决的问题,故选择直接集成禅道数据库来关联禅道,禅道数据库中基本所有表中的字段皆不可为null,所以需要人为修改字段可以为null,且对于关联已有的禅道项目可能存在不兼容的问题
b)用户需配置"../webapps/ROOT/WEB-INF/_srv/config/“路径中的”user-config.xml“文件

<module name="DataSource">
<group name="default">
<configValue key="Database-Type">MySql</configValue>
<configValue key="Jdbc-Type"/>
<configValue key="C3p0-DriverClass">com.mysql.jdbc.Driver</configValue>
<configValue key="C3p0-Url">jdbc:mysql://xxx.xxx.xxx.xxx:xxxx/xxx</configValue>
<configValue key="C3p0-UserName">xxx</configValue>
<configValue key="C3p0-Password">xxx</configValue>
<configValue key="C3p0-PoolSize">20</configValue>
<configValue key="C3p0-MaxPoolSize">100</configValue>
<configValue key="C3p0-MinPoolSize">10</configValue>
<configValue key="Transaction-Isolation">ISOLATION_DEFAULT</configValue>
<configValue key="Test-Connect-Sql">SELECT count(*) from EOS_UNIQUE_TABLE</configValue>
<configValue key="Retry-Connect-Count">-1</configValue>
</group>
<group name="zentao">
<configValue key="Database-Type">MySql</configValue>
<configValue key="Jdbc-Type"/>
<configValue key="C3p0-DriverClass">com.mysql.jdbc.Driver</configValue>
<configValue key="C3p0-Url">jdbc:mysql://xxx.xxx.xxx.xxx:xxxx/xxx?characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull</configValue>
<configValue key="C3p0-UserName">xxx</configValue>
<configValue key="C3p0-Password">xxx</configValue>
<configValue key="C3p0-PoolSize">20</configValue>
<configValue key="C3p0-MaxPoolSize">100</configValue>
<configValue key="C3p0-MinPoolSize">10</configValue>
<configValue key="Transaction-Isolation">ISOLATION_DEFAULT</configValue>
<configValue key="Test-Connect-Sql">SELECT count(*) from EOS_UNIQUE_TABLE</configValue>
<configValue key="Retry-Connect-Count">-1</configValue>
</group>
</module>
用户还需在DevOps平台管理服务集成处增加禅道配置,用于数据库链接测试(不可缺少!)

c)在启动DevOps服务前,需要执行数据库更新sql脚本
update eos_dict_entry set DICTNAME = 'zentao' where DICTID = 'Pcm.ProjectManageToolType';
DELETE FROM EOS_DICT_ENTRY WHERE DICTTYPEID='DPS_PM_ZENTAO_WORKITEM_TYPE';
DELETE FROM EOS_DICT_TYPE WHERE DICTTYPEID='DPS_PM_ZENTAO_WORKITEM_TYPE';
INSERT INTO EOS_DICT_TYPE (DICTTYPEID, DICTTYPENAME, RANK, SEQNO)
VALUES ('DPS_PM_ZENTAO_WORKITEM_TYPE', '禅道工作项类型', 1, '.DPS_PM_ZENTAO_WORKITEM_TYPE.');
INSERT INTO EOS_DICT_ENTRY (DICTTYPEID, DICTID, DICTNAME, STATUS, SORTNO, RANK, SEQNO)
VALUES ('DPS_PM_ZENTAO_WORKITEM_TYPE', '2', 'story', 1, 1, 1, '.2.'),
('DPS_PM_ZENTAO_WORKITEM_TYPE', '3', 'task', 1, 2, 1, '.3.'),
('DPS_PM_ZENTAO_WORKITEM_TYPE', '4', 'bug', 1, 3, 1, '.4.');
DELETE FROM EOS_DICT_ENTRY WHERE DICTTYPEID='DPS_PM_ZENTAO_WORKITEM_PRIORITY';
DELETE FROM EOS_DICT_TYPE WHERE DICTTYPEID='DPS_PM_ZENTAO_WORKITEM_PRIORITY';
INSERT INTO EOS_DICT_TYPE (DICTTYPEID, DICTTYPENAME, RANK, SEQNO)
VALUES ('DPS_PM_ZENTAO_WORKITEM_PRIORITY', '禅道工作项优先级', 1, '.DPS_PM_ZENTAO_WORKITEM_PRIORITY.');
INSERT INTO EOS_DICT_ENTRY (DICTTYPEID, DICTID, DICTNAME, STATUS, SORTNO, RANK, SEQNO)
VALUES ('DPS_PM_ZENTAO_WORKITEM_PRIORITY', '1', 'highest', 1, 1, 1, '.1.'),
('DPS_PM_ZENTAO_WORKITEM_PRIORITY', '2', 'high', 1, 2, 1, '.2.'),
('DPS_PM_ZENTAO_WORKITEM_PRIORITY', '3', 'medium', 1, 3, 1, '.3.'),
('DPS_PM_ZENTAO_WORKITEM_PRIORITY', '4', 'low', 1, 4, 1, '.4.'),
('DPS_PM_ZENTAO_WORKITEM_PRIORITY', '0', 'lowest', 1, 5, 1, '.0.');
DELETE FROM EOS_DICT_ENTRY WHERE DICTTYPEID='DPS_PM_ZENTAO_WORKITEM_BUG_LEVEL';
DELETE FROM EOS_DICT_TYPE WHERE DICTTYPEID='DPS_PM_ZENTAO_WORKITEM_BUG_LEVEL';
INSERT INTO EOS_DICT_TYPE (DICTTYPEID, DICTTYPENAME, RANK, SEQNO)
VALUES ('DPS_PM_ZENTAO_WORKITEM_BUG_LEVEL', '禅道BUG工作项严重等级', 1, '.DPS_PM_ZENTAO_WORKITEM_BUG_LEVEL.');
INSERT INTO EOS_DICT_ENTRY (DICTTYPEID, DICTID, DICTNAME, STATUS, SORTNO, RANK, SEQNO)
VALUES ('DPS_PM_ZENTAO_WORKITEM_BUG_LEVEL', '1', 'fatal', 1, 1, 1, '.1.'),
('DPS_PM_ZENTAO_WORKITEM_BUG_LEVEL', '2', 'serious', 1, 2, 1, '.2.'),
('DPS_PM_ZENTAO_WORKITEM_BUG_LEVEL', '3', 'general', 1, 3, 1, '.3.'),
('DPS_PM_ZENTAO_WORKITEM_BUG_LEVEL', '4', 'light', 1, 4, 1, '.4.'),
('DPS_PM_ZENTAO_WORKITEM_BUG_LEVEL', '5', 'recommended', 1, 5, 1, '.5.');
DELETE FROM EOS_DICT_ENTRY WHERE DICTTYPEID='DPS_PM_ZENTAO_BUG_STATUS';
DELETE FROM EOS_DICT_TYPE WHERE DICTTYPEID='DPS_PM_ZENTAO_BUG_STATUS';
INSERT INTO EOS_DICT_TYPE (DICTTYPEID, DICTTYPENAME, RANK, SEQNO)
VALUES ('DPS_PM_ZENTAO_BUG_STATUS', '禅道BUG状态', 1, '.DPS_PM_ZENTAO_BUG_STATUS.');
INSERT INTO EOS_DICT_ENTRY (DICTTYPEID, DICTID, DICTNAME, STATUS, SORTNO, RANK, SEQNO)
VALUES ('DPS_PM_ZENTAO_BUG_STATUS', 'active', 'open|激活', 1, 1, 1, '.active.'),
('DPS_PM_ZENTAO_BUG_STATUS', 'resolved', 'verified|已解决', 1, 2, 1, '.resolved.'),
('DPS_PM_ZENTAO_BUG_STATUS', 'closed', 'closed|已关闭', 1, 3, 1, '.closed.');
DELETE FROM EOS_DICT_ENTRY WHERE DICTTYPEID='DPS_PM_ZENTAO_TASK_STATUS';
DELETE FROM EOS_DICT_TYPE WHERE DICTTYPEID='DPS_PM_ZENTAO_TASK_STATUS';
INSERT INTO EOS_DICT_TYPE (DICTTYPEID, DICTTYPENAME, RANK, SEQNO)
VALUES ('DPS_PM_ZENTAO_TASK_STATUS', '禅道TASK状态', 1, '.DPS_PM_ZENTAO_TASK_STATUS.');
INSERT INTO EOS_DICT_ENTRY (DICTTYPEID, DICTID, DICTNAME, STATUS, SORTNO, RANK, SEQNO)
VALUES ('DPS_PM_ZENTAO_TASK_STATUS', 'wait', 'to-do|未开始', 1, 1, 1, '.wait.'),
('DPS_PM_ZENTAO_TASK_STATUS', 'doing', 'in-progress|进行中', 1, 2, 1, '.doing.'),
('DPS_PM_ZENTAO_TASK_STATUS', 'done', 'done|已完成', 1, 3, 1, '.done.'),
('DPS_PM_ZENTAO_TASK_STATUS', 'pause', '已暂停', 1, 4, 1, '.pause.'),
('DPS_PM_ZENTAO_TASK_STATUS', 'cancel', '已取消', 1, 5, 1, '.cancel.'),
('DPS_PM_ZENTAO_TASK_STATUS', 'closed', '已关闭', 1, 6, 1, '.closed.');
DELETE FROM EOS_DICT_ENTRY WHERE DICTTYPEID='DPS_PM_ZENTAO_STORY_STATUS';
DELETE FROM EOS_DICT_TYPE WHERE DICTTYPEID='DPS_PM_ZENTAO_STORY_STATUS';
INSERT INTO EOS_DICT_TYPE (DICTTYPEID, DICTTYPENAME, RANK, SEQNO)
VALUES ('DPS_PM_ZENTAO_STORY_STATUS', '禅道STORY状态', 1, '.DPS_PM_ZENTAO_STORY_STATUS.');
INSERT INTO EOS_DICT_ENTRY (DICTTYPEID, DICTID, DICTNAME, STATUS, SORTNO, RANK, SEQNO)
VALUES ('DPS_PM_ZENTAO_STORY_STATUS', 'wait', 'open|未开始', 1, 1, 1, '.wait.'),
('DPS_PM_ZENTAO_STORY_STATUS', 'planned', '已计划', 1, 2, 1, '.planned.'),
('DPS_PM_ZENTAO_STORY_STATUS', 'projected', '已立项', 1, 3, 1, '.projected.'),
('DPS_PM_ZENTAO_STORY_STATUS', 'developing', 'developing|研发中', 1, 4, 1, '.developing.'),
('DPS_PM_ZENTAO_STORY_STATUS', 'developed', 'to-be-tested|研发完毕', 1, 5, 1, '.developed.'),
('DPS_PM_ZENTAO_STORY_STATUS', 'testing', 'testing|测试中', 1, 6, 1, '.testing.'),
('DPS_PM_ZENTAO_STORY_STATUS', 'tested', '测试完毕', 1, 7, 1, '.tested.'),
('DPS_PM_ZENTAO_STORY_STATUS', 'verified', 'verified|已验收', 1, 8, 1, '.verified.'),
('DPS_PM_ZENTAO_STORY_STATUS', 'released', 'released|已发布', 1, 9, 1, '.released.'),
('DPS_PM_ZENTAO_STORY_STATUS', 'closed', '已关闭', 1, 10, 1, '.closed.');
DELETE FROM EOS_DICT_ENTRY WHERE DICTTYPEID='DPS_PM_ZENTAO_ITERATION_STATUS';
DELETE FROM EOS_DICT_TYPE WHERE DICTTYPEID='DPS_PM_ZENTAO_ITERATION_STATUS';
INSERT INTO EOS_DICT_TYPE (DICTTYPEID, DICTTYPENAME, RANK, SEQNO)
VALUES ('DPS_PM_ZENTAO_ITERATION_STATUS', '禅道迭代状态', 1, '.DPS_PM_ZENTAO_ITERATION_STATUS.');
INSERT INTO EOS_DICT_ENTRY (DICTTYPEID, DICTID, DICTNAME, STATUS, SORTNO, RANK, SEQNO)
VALUES ('DPS_PM_ZENTAO_ITERATION_STATUS', 'wait', 'future|未开始', 1, 1, 1, '.wait.'),
('DPS_PM_ZENTAO_ITERATION_STATUS', 'doing', 'active|进行中', 1, 2, 1, '.doing.'),
('DPS_PM_ZENTAO_ITERATION_STATUS', 'closed', 'closed|已完成', 1, 3, 1, '.closed.'),
('DPS_PM_ZENTAO_ITERATION_STATUS', 'suspended', '已挂起', 1, 4, 1, '.suspended.');
delete from EOS_DICT_ENTRY where DICTTYPEID='DPS_PM_BUG_WORKITEM_STATUS';
delete from EOS_DICT_TYPE where DICTTYPEID='DPS_PM_BUG_WORKITEM_STATUS';
INSERT INTO EOS_DICT_TYPE (DICTTYPEID, DICTTYPENAME, RANK, PARENTID, SEQNO)
VALUES ('DPS_PM_BUG_WORKITEM_STATUS', 'Bug工作项状态', 1, null, '.DPS_PM_BUG_WORKITEM_STATUS.');
INSERT INTO EOS_DICT_ENTRY (DICTTYPEID, DICTID, DICTNAME, STATUS, SORTNO, RANK, PARENTID, SEQNO, FILTER1, FILTER2)
VALUES ('DPS_PM_BUG_WORKITEM_STATUS', 'open', '待解决', 1, 1, 1, null, '.open.', null, null),
('DPS_PM_BUG_WORKITEM_STATUS', 'verified', '验证通过', 1, 5, 1, null, '.verified.', null, null),
('DPS_PM_BUG_WORKITEM_STATUS', 'closed', '已关闭', 1, 7, 1, null, '.closed.', null, null);
d)现暂不支持工作项上传附件功能,有待后续优化

e)任务工作项不支持选择版本,且创建任务时必须选择迭代

f)版本暂不支持里程碑

g)故事工作项无到期时间,无故事点

h)创建工作项时父工作项(关联工作项)暂只支持选择故事类型的工作项

i)工作项查询时过滤条件类型默认查询故事工作项而不是全部类型,不支持多类型工作项查询,仅可选择单一工作项类型查询

j)暂不支持工作项列表按key查询工作项

k)暂不支持模块增加描述信息

l)暂不支持工作项列表排序

m)故事工作项暂不支持耗费时间

n)bug工作项暂不支持预估时间和耗费时间
