禅道开源版如何二开定制改造!

bdfc83f1f9387b9574a8ba449bc4d9cf.jpeg

开课通知:重磅消息 | 2023年最新全栈测试开发技能实战指南V2.0(第4期)

1、禅道介绍

禅道项目管理软件是第一款国产的开源项目管理软件。它集产品管理、项目管理、质量管理、文档管理、 组织管理于一体,在数据可视化、度量、DevOps、文档资产管理和自动化测试等模块的加持下,禅道软件形成了项目流程管理、DevOps 一体化、自动化测试等三大解决方案,完整的覆盖了产品研发的全生命周期管理,并且有完善的 API 可以调用,在国内深受大量企业喜爱使用。

3b2cb3aedbdffef0702fad9a56cf39e9.png

禅道官网目前存在四个版本:开源版、企业版、旗舰版、云禅道,对于这四个版本之间的差异,不是本文介绍的重点,感兴趣的读者可自行查阅官网介绍

https://www.zentao.net/

很多个人使用者或者中小企业,大多数选用的是开源版,开源版的好处:只有你具备开发能力,可以基于实际不同的项目管理需求,来定制系统功能。当然如果企业不差钱或者没有人手可以定制,可以花点钱购买企业版或旗舰版。

2、禅道二开定制机制

今天我们重点来介绍一下,禅道如何进行功能二开定制。

首先,禅道项目管理软件是使用自主开发的zentaoPHP框架开发的。zentaoPHP框架实现了功能强大的扩展机制、API调用机制和命令行机制。您可以使用不同的机制来实现对禅道功能的修改、扩展。也可以和其他的系统进行集成,也可以部署各种自动化脚本对禅道进行各种操作。

zentaoPHP框架的二次开发机制文档可参考:

1. zentaoPHP框架基本使用手册:http://devel.cnezsoft.com/book/zentaophphelp.html
2. zentaoPHP框架二次开发机制:http://devel.cnezsoft.com/book/extension.html

禅道开源版项目源码:

https://github.com/easysoft/zentaopms

一、顶级目录结构:

1b5b2eded03c65e634ede20f6954e65a.png

二、www目录:

3d0c2f134026dc05cad92aa64c39bf38.png

三、module目录:

module目录下面总共有30多个模块,分别对应了禅道里面的某一个功能模块。整个禅道的功能,就是由这些模块组合而成。大部分定制功能代码都是在这个模块下来完成的。

f2e3530a16c56c86e66b7d4a56544db6.png

3、一键部署禅道及禅道二开定制示例

接下来,以具体示例演示,如何在禅道里面给BUG自定义字段,其他如产品需求、项目任务定制也是一样的逻辑。

3.1 本地Docker一键搭建禅道环境

docker run --name zentao -p 80:80 -p 3306:3306 -v ~/www/zentaopms:/www/zentaopms -v ~/www/mysqldata:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --restart always -d easysoft/zentao:18.3

禅道服务启动后自带MySQL数据库服务,比如进入MySQL容器内:

86ad8d4280ebd8fdb9285afa4c608f2c.png

查看zt_bug表结构63258b5db9c28e21ffd7d5bfaeb348d7.png

禅道的数据库命名都比较简明扼要,从字面意思应该都可以猜出来表的用途。如果还不是很清楚的话,可以到每个表对应的模块下面的语言文件里面查找。最新版本可以在禅道后台->二次开发->数据库中查看相应的表介绍,或直接查看官网文档

https://www.zentao.net/book/zentaopmshelp/157/

3.2 对BUG自定义新增字段

示例: 比如原先提交BUG时,无法记录BUG是在哪个阶段被发现的,那么我们可以通过改造禅道,自定义增加一个【BUG发现阶段】字段

改造定制过程:

1、给数据库zt_bug添加新增字段【BUG发现阶段】

ALTER TABLE zt_bug ADD COLUMN stage VARCHAR(50) AFTER title;
db57e61bc67c37e5a31d333466072817.png

2、修改zentaopms/module/bug/lang/zh-cn.php 如下图,新增Bug发现阶段字段,即在合适的位置插入以下代码

d17ebcc9f300e2ad77b0c721baad9851.png

接着如下图,在合适的位置插入以下代码

$lang->bug->stageList['review'] = '评审阶段';
$lang->bug->stageList['dev'] = '开发自测';
$lang->bug->stageList['test'] = '测试验证';
$lang->bug->stageList['acceptance'] = '验收阶段';
$lang->bug->stageList['production'] = '生产阶段';

说明:这里定义的是用于存放对应字段select下拉选框中的数据,当在创建Bug/编辑Bug并保存后,会自动被存储到数据库中。笔者使用的禅道,语言设置的是中文,所以仅修改zh-cn.php

3、修改zentaopms/module/bug/view/create.html.php (BUG新建页面)

<div class='table-col'>
  <div class='input-group'>
      <span class='input-group-addon fix-border'><?php echo $lang->bug->stage?></span>
        <?php echo html::select('stage', $lang->bug->stageList, $stage, "class='form-control chosen'");?>
 </div>
</div>
e55c80c3693708fa266370fdf1c6a7b3.png

展示效果:

2a30044e47ed28fab5f6f8fe9db57305.png

4、修改zentaopms/module/bug/view/edit.html.php (BUG编辑页面) 如下图,在合适的位置插入以下代码:

js::set('stage'                 , $bug->stage);
f545be4cfae19f31b12946fcc32d2a97.png

如下图,在合适的位置插入以下代码

<tr>
<th><?php echo $lang->bug->stage;?></th>
<td><?php echo html::select('stage', $lang->bug->stageList, $bug->stage, "class='form-control'");?></td>
</tr>
<tr>

效果展示:

f130e5aeb5dac713cb3060692bb2e0cc.png

5、修改zentaopms/module/bug/view/view.html.php (BUG查看页面)

如下图,在合适的位置插入以下代码:

<tr>
<th><?php echo $lang->bug->stage;?></th>
<td><strong><?php echo zget($lang->bug->stageList, $bug->stage, $bug->stage);?></strong></td>
</tr>
ddd4469875078bdfcc2a9f8bbeda5e53.png

效果展示:

809d575c26b165f09b3ae1daa532aaf9.png

6、bug导出报表中增加新增的自定义字段名称

如下,找到$config->bug->config->exportFields变量,增加新增的自定义字段名称,解决缺陷导出报表中没有新增字段的问题,如下

c700f52a379576305564784b31838e49.png展示效果:

af1a56b6bac3653c0db2793a04a96d03.png 22b493e10f1470a830280562642f097e.png

7、bug搜索过滤条件中增加新增的自定义字段名称

如下,找到global $lang,在其下方合适的位置新增搜索字段,即我们自定义的字段,并给字段设置可选搜索项,解决缺陷搜索中没有新增字段问题。(需要修改两处地方)

$config->bug->search['fields']['stage']          = $lang->bug->stage;
56aef3197155c1f7c8e3f18efe5aaa9f.png
$config->bug->search['params']['stage']          = array('operator' => '=',       'control' => 'select', 'values' => $lang->bug->stageList);
ea8cb3bb925969e3f2876ea278d74031.png

效果展示:

8b935eed9fbda4c44f3abea2a4fd26ff.png

8、bug生成报表时新增自定义字段

添加完字段后,bug的报表统计中没有该字段的信息,无法按照自定义的字段进行bug分析,如何将自定义的字段添加到BUG的统计报表中去。首先在zh-cn.php中添加新字段报表信息,打开zh-cn.php文件,添加报表统计字段

$lang->bug->report->charts['bugsPerStage']         = '按Bug发现阶段';

紧接着,添加报表以及图表空对象

$lang->bug->report->bugsPerStage           = new stdclass();
$lang->bug->report->bugsPerStage->graph          = new stdclass();

添加图表显示字段信息

$lang->bug->report->bugsPerStage->graph->xAxisName       = '发现阶段';

其次,在module.php中新增字段统计方法, 编辑module.php信息

/**
* Get report data of bugs stage
* 根据BUG发现阶段获取报表
* @access public
* @rerturn array
*/
public function getDataOfBugsPerStage()
  {
    $datas = $this->dao->select('stage AS name, COUNT(*) AS value')->from(TABLE_BUG)->where($this->reportCondition())->groupBy('name')->orderBy('value DESC')->fetchAll('name');
    if(!$datas) return array();
    foreach($datas as $stage => $data) if(isset($this->lang->bug->stageList[$stage])) $data->name = $this->lang->bug->stageList[$stage];
    return $datas;
  }

8066d4f086231942764cb41585f2cc2b.png效果展示:

dcfd4c7cab9e5fa3744aed329911a85b.png 874ec6cbbd1a2f0e73fd41d4772cf0e0.png

如果觉得有用,就请关注、点赞、在看、分享到朋友圈吧。

推荐阅读:

  1. 重磅消息 | 2023年最新全栈测试开发技能实战指南V2.0(第4期)

  2. 史上最全测试开发工具推荐(含自动化、APP性能、稳定性、抓包神器)

  3. 2022年最全的软件测试工程师发展知识体系图谱!

END

32648ae6d5790a775d7012fe4f2cdc47.png

所有原创文章

第一时间发布至此公众号「测试开发技术」

825fc65654da7a12494040052e5b381f.jpeg

长按二维码/微信扫码  添加作者

猜你喜欢

转载自blog.csdn.net/sdoa0806/article/details/131820816