首页 > 其他分享 >禅道开源改造

禅道开源改造

时间:2024-01-31 11:25:13浏览次数:25  
标签:lang stageList 改造 BUG 开源 bug 禅道 stage

1、禅道介绍

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

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

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

一、顶级目录结构:

二、www目录:

三、module目录:

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

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容器内:

查看zt_bug表结构

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

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;

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

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

$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>

展示效果:

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

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

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

<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>

效果展示:

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>

效果展示:

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

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


展示效果:

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

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

$config->bug->search['fields']['stage']          = $lang->bug->stage;

$config->bug->search['params']['stage']          = array('operator' => '=',       'control' => 'select', 'values' => $lang->bug->stageList);

效果展示:

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;
  }


效果展示:

标签:lang,stageList,改造,BUG,开源,bug,禅道,stage
From: https://www.cnblogs.com/jinjiangongzuoshi/p/17711686.html

相关文章

  • 白鲸开源荣膺2023年度大数据产业最具投资价值企业奖项
    北京时间2024年2月20日,中国领先的开源技术公司,白鲸开源科技有限公司(以下简称"白鲸开源")荣幸宣布,该公司获得了第六届"年度金猿季大型主题策划活动"颁发的"2023大数据产业年度最具投资价值"奖项。这一殊荣是对白鲸开源在大数据领域取得的卓越成就和突出贡献的认可。金猿季推动......
  • 白鲸开源荣膺2023年度大数据产业最具投资价值企业奖项
    北京时间2024年2月20日,中国领先的开源技术公司,白鲸开源科技有限公司(以下简称"白鲸开源")荣幸宣布,该公司获得了第六届"年度金猿季大型主题策划活动"颁发的"2023大数据产业年度最具投资价值"奖项。这一殊荣是对白鲸开源在大数据领域取得的卓越成就和突出贡献的认可。金猿季推动......
  • 【开源操作系统】上海道宁为您带来稳定、安全、开源和易用的操作系统——Ubuntu,为您的
    ​Ubuntu是源于非洲的一种传统价值观意为“人性、关爱和共享”这种价值观在开源、稳定、安全、易用的Ubuntu操作系统中得到了完美的体现  除此之外,Ubuntu还具有强大的安全性它自带了诸多安全功能如防火墙、加密文件系统等可以有效地保护用户的隐私和数据安全......
  • 鸿蒙OS和开源鸿蒙什么关系?
    开源鸿蒙(OpenHarmony)鸿蒙系统愿来的设计初衷,就是让所有设备都可以运行一个系统,但是每个设备的运算能力和功能都不同,所以内核的设计上,采用了微内核的设计,除了最基础的功能放在内核,其他功能都以模块的形式存在。华为用的是鸿蒙OS我们都知道,华为手机的鸿蒙OS是可以运行安卓软件的,是因......
  • 人脸识别几个开源
    人脸识别几个开源1.OpenFaceGithub:https://github.com/TadasBaltrusaitis/OpenFaceOpenFace是一个用于计算机视觉和机器学习的工具,能够进行各种面部识别检测,包括:特征点检测、头部姿态识别、面部动作识别和眼睛注视识别。此外,它还能够从网络摄像头无需任何专业硬件实现人脸实......
  • 【独立开发案例分享】我们如何通过开源来获得流量增长?
    【案例背景】本案例的作者是【NevoDavid】,他目前在Novu公司负责业务增长。Novu本来是一家B2B的SaaS公司,但是创业初期,没有获得多少客户。后来,由于偶然的因素,他们打算把项目开源,发布到GitHub,然后,不可思议的事情发生了。他们项目在4天内,获得了2000个Star,并且一......
  • 工厂生产管理MES系统,开源代码+维护
     商业开源的一套超有价值的JAVA制造执行MES系统源码亲测带本地部署搭建教程教你如何在本地运行运行起来。开发环境:jdk11+tomcat+mysql8+springboot+maven需要源码,私信我获取,可以项目合作+维护一、系统概述:MES制造执行系统,其定位于制造执行系统的Java开源版本。系统包括系统管理......
  • 推荐一款快速搭建后台管理系统的开源代码
    前言公司要求快速搭建两套不同的后台管理系统,在寻找多个demo之后,最终锁定vue-element-admin作为最终方案,网址为:https://panjiachen.gitee.io/vue-element-admin-site/zh/guide/#%E5%8A%9F%E8%83%BD  因为公司对后台系统没有过多的要求,所以我就选择了最基础的......
  • 开源资源:华为盘古大模型
    华为盘古大模型的官方介绍地址:https://www.mindspore.cn/largeModel/pangu盘古大模型的开源代码和开源权重(模型参数)的地址:(鹏城实验室的启智平台)https://openi.pcl.ac.cn/PCL-Platform.Intelligence/PanGu-Alpha开源代码:开源的模型参数文件:(在开源的代码git仓库的README中可以找到!!!)htt......
  • 如何改Maven Dependencies的源码,如何把springboot组件的源码改造后使用
    由于springboot提供的源码有些地方不太符合预期,所以需要改动改动,这里就会说到,如何改MavenDependencies的源码。如何把springboot组件的源码改造后使用。v修改源码的几种方式直接在自己工程中建同包同类名的类进行替换采用@Primary注解排除需要替换的jar包中的类@Bean......