手把手教你如何高效落地单项目管理,云效Projex是新一代企业级研发协作平台,集成了敏捷研发项目管理的最佳实践,提供了针对项目、迭代、需求、缺陷等多个维度的协同管理以及相关的统计报告,让研发团队高效协作、践行敏捷并持续交付产品价值。且提供了关于单项目管理工作项的模板管理能力,模板管理分为字段模板及内容模板。通过字段模板管理可以统一特定类型的属性填写规则,提高协作的规范性;内容模板可以给定协作过程中的内容格式,提高协作的高效性。

支持属性字段的添加、删除、默认值设置、必填设置、展示顺序调整。
默认的系统字段不支持删除。

添加字段:支持字段检索及信息查看。如果检索不到所需字段,可跳转至基本信息管理新建字段(具体企业级字段管理权限),或者联系企业管理员添加。

内容模板在配置后,新建的工作项会自带内容格式。

云效Projex支持为每一种工作项类型配置不同的工作流,包括需求、任务、缺陷、风险。
在工作项设置区域,首先选择工作项类型,然后点击“操作”图标,即可进入工作流设置页面。

Projex的工作流设置采用“二维表”模式,表格的“行”和“列”都是该工作流中所有的状态,如果某个cell被选中,代表这个cell的“行”状态可以变更到“列”状态,如下图红色cell代表状态可以从“代处理”变化到“处理中”。

如果您需要将新的状态添加到工作流,可以点击右上角的添加按钮,并且选择需要添加的状态,然后添加到工作流。
这里能添加的状态,是由基本信息管理好的状态列表,如果列表中没有合适的状态,请联系企业管理员添加新的状态。
每个状态都归属于一个“阶段”,例如“开发中”和“开发完成”都属于“开发阶段”。当状态被添加到工作流中,会按照阶段进行归类排序。

您不仅可以设置状态的变化步骤,还可以给某个状态变化步骤设置规则。这里的常用规则包括:
当变化到这个状态时,某个工作项字段必填
只有某些用户或某些角色可以修改这个状态
实际应用场景案例:
当需求完成时,需要用户填写花费的工时
缺陷关闭时要选择缺陷原因
缺陷只有测试人员可以关闭

在工作流中不需要某个状态时,可鼠标hover到对应状态上从工作流中删除该状态。删除后之前流转到该状态的关系将不再存在。

云效Projex提供了灵活的成员管理能力。项目管理员可以添加企业内已有角色到项目内,自行配置权限。

角色添加及权限配置。项目管理员默认具备所有项目权限且不可取消。


|
服务 |
权限点 |
说明 |
|
工作项 (包含需求、缺陷、任务、风险) |
创建 |
是否可以创建工作项。当无权限时创建会提示无权限操作。 |
|
评论 |
是否可以评论工作项。当无权限时提交评论会提示无权限操作 |
|
|
关联 |
是否可以操作关联其他工作项、关联/创建子项、关联父项。 |
|
|
批量导入、导出 |
是否可以批量导出、导入。 |
|
|
字段修改 |
是否可以除状态、类型、归属项目、内容标题以外的字段的修改。包含批量修改字段权限校验。 |
|
|
状态修改 |
是否可以修改状态。当无权限时无法修改状态。包含批量修改状态权限校验。 |
|
|
变更类型 |
是否可以修改类型。当无权限时无法修改类型。包含批量修改类型权限校验。 |
|
|
归属项目修改 |
是否可以修改归属项目。当无权限时无法修改归属项目。包含批量修改归属项目权限校验。 |
|
|
内容标题修改 |
是否可以修改内容标题。当无权限时无法修改内容标题。包含批量修改内容标题权限校验。 |
|
|
登记工时 |
是否可以登记工时。当无权限时无法提交登记工时。 |
|
|
归档 |
是否可以归档工作项。当无权限时操作提示无权限。 |
|
|
删除 |
是否可以删除工作项。当无权限时操作提示无权限。 |
|
|
迭代 |
创建、编辑 |
是否可以创建、编辑迭代。当无权限时创建或编辑提示无权限。 |
|
视图 |
公共视图创建、编辑 |
是否可以创建、编辑公共视图。当无权限时创建或编辑提示无权限。 |
|
里程碑 |
创建、编辑 |
是否可以创建、编辑里程碑。当无权限时创建或编辑提示无权限。 |
|
项目设置 |
配置 |
是否可以配置项目的设置,包括基本信息、成员管理、导航服务、工作项配置等操作。当无权限时操作提示无权限。 |
为了能够更加灵活的支持用户在企业层级和项目层级通知场景,云效Projex在项目模板及项目中支持通知配置。在配置中可灵活定制通知范围、通知渠道。
项目的通知设置支持通知角色设置、通知渠道设置。当全部角色或渠道取消设置后,意味着当前通知事件关闭。

基于模板创建的项目自动初始化模板配置的通知规则,使一套模板的项目具备相同的通知逻辑。同时支持在项目内自行调整,更加适配项目的协作场景。

在云效Projex中支持研发工具集成。目前支持云效自研云效代码管理平台Codeup的集成,后续会继续扩展如Github等三方平台的集成。
集成Codeup后,可以实现代码的提交、合并请求的状态变更联动工作项的变更,实现研发只关注开发工作而不需要维护工作项状态变化的目的。
在项目设置中,进入webhook设置页面。展现当前集成的平台列表。

点击配置进入平台配置详情页面,展现webhook配置的物料及说明。

根据配置说明,复制配置物料到Codeup中进行webhook配置。订阅项目监听的代码库事件。
token复制及重新生成需要进行权限鉴定,需要具备项目配置管理权限的人员才可进行操作,其余人员无法进行操作。
在重新生成token后,之前已经在Codeup中配置的token会失效。需要进行及时更新,否则会导致代码库的事件无法监听。
在日常工作中使用协作工具你可能会遇到这些问题:
1.需求关联的代码已经发布了,但是状态还停留在待处理
2.这部分工作有固定接口人,但是每次我还要手动指定到这个人负责。
3.我负责的工作项已经快到期了,但是一点提醒都没有,我错过了交付时间。
这些问题造成了很大的手动维护成本,且往往会由于更新不及时造成交付效率降低。
为了更好的解决你的这些问题,我们提供了自动化引擎服务,它通过触发-过滤-响应模式,完成状态自动流转、需求自动指派、自动催办。繁琐重复的事务交给自动化引擎,让你有更多的时间精力投入有价值的工作。
通过制定自动化规则可以帮助你在日常协作中进行状态自动流转、需求自动指派、自动催办、平台集成。
状态自动流转
当需求与实际的产研工作结合时,状态流转往往是通过一些实际的动作触发的。以往用户在完成具体工作后,还需要手动到平台上变更状态。增加了手动操作成本,还造成了协作效率下降、协作流程不规范的问题。通过自动化引擎设置的状态自动流转可以很好的解决这一问题。
实际场景举例
需求规划到迭代中,状态变更为开发中。
配置示例

需求自动指派
在项目的管理到达成熟阶段后,每个部分都会有实际的负责人。以往用户在创建需求时要多方询问确定负责人,这对用户创建非常不便,且增加沟通成本。如果随意指派则可能造成需求交付不及时,甚至漏掉需求的风险。通过自动化规则的需求自动指派可以很好的解决这一问题。
实际场景举例
需求的状态变更为测试中,自动指派给测试人员。
配置示例

属性自动变更
在一些协作场景中,需求的某些字段值是由其他操作触发的。以往用户需要手动维护属性值,增加了手动维护成本且会存在更新不及时或不准确的问题。通过自动化规则的属性自动变更可以很好的解决这一问题。
实际场景举例
需求的标签添加了“KA需求”,优先级自动变更为高。
配置示例

自动催办
在需求或任务到期前,项目管理者是希望能够及时提醒负责人进行处理的。以往手动提醒成本很高且提醒不够及时。通过自动化规则的自动催办可以很好的解决这一问题。
实际场景举例
需求在计划完成日期前3天,提醒需求负责人尽快完成。
配置示例

自动化规则引擎分为三个部分:触发事件、执行条件、执行动作。为了减少使用成本,云效提供了开箱即用的模板给到你直接使用。

只需要更改模板的字段,即可完成规则创建。
当规则触发后,对应工作项会展现规则执行记录。

点击进入规则执行详情页面查看具体信息。

在自动化设置中聚合了所有项目内的规则执行记录,可查看规则创建、变更、执行记录。

针对执行失败的规则展现特殊标记,进入可查看失败详情。

在云效Projex通过自动化规则配置实现用户在协作场景中与实际工作内容(代码提交、合并请求状态变更等)发生联动,支持工作项与关联的对象(包含工作项、研发对象、测试用例等)联动。
场景:当缺陷存在带有fix ID的提交时时,变更状态为已修复。
可以根据关联工作项的提交包含的关键字,联动工作项的状态或者字段的变更。如果设置不为空,则无需校验提交内容。

当合并请求关联时触发工作项的变更。一旦关联发生,则可以触发后续的工作项状态变更或字段变更。

当关联的合并请求状态发生变更时触发工作项的变更。为了能够监听到关联的合并请求状态变化,需要到对应代码库进行webhook配置。若不进行配置,则会导致规则无法执行。
注:在模板层级配置的规则,需要具体项目的webhook配置到代码库中才可生效。

当分支关联时触发工作项的变更。一旦关联发生,则可以触发后续的工作项状态变更或字段变更。

当测试用例关联时触发工作项的变更。一旦关联发生,则可以触发后续的工作项状态变更或字段变更。

在催办场景下我们支持钉钉群通知到负责人待办处理,提高协作的效率。
【钉钉群图示例】
首先,需要在钉钉群创建一个催办机器人。配置入口:「钉钉群」-「群设置」-「智能群助手」-「添加机器人」具体配置请参见钉钉群自定义机器人配置说明。
之后在Projex自动化配置中选择合适的催办模板,我们目前提供的钉钉群催办模板如下。

以工作项状态流转催办为例,我们选择第一个模板进行配置。

名称:作为通知的标题出现,可以选择符合场景的合适标题。
Webhook地址:复制钉钉机器人的Webhook地址粘贴进来。

加签密钥:选择钉钉机器人的密钥粘贴进来。

点击保存完成钉钉群通知配置。

在自动化规则中,支持联动三方平台进行协作的动作流转。如工作项的状态联动企业的审批系统工单流转。这种流转方式我们采用Webhook进行支持。
对应模板如下图所示:
目前支持字段变更或者状态变更触发三方平台的动作。


Webhook URL:Webhook请求地址,http:// 或 https:// 开头
HTTP Method:支持POST、GET
Secret:可选,用于对@Webhook请求进行校验。设置了Secret后,发起Webhook请求时,会增加请求头X-Projex-Signature,Value即为Secret的值。
Headers:可选,支持设置请求头
Webhook Body:设置为【空数据】时,发起POST请求时,Body为空;设置为【工作项数据】时,Body内容为当前规则作用的工作项数据(需求、缺陷、任务),示例规则:产品类需求创建时,触发Webhook请求,此时发起Webhook请求时,会将需求的数据对象放在Body中。
【工作项数据】为JSON对象,其中字段如下所示:
|
字段名 |
字段类型 |
字段描述 |
|
identifier |
String |
工作项的唯一标识 |
|
gmtCreate |
Long |
创建时间,时间戳,单位毫秒 |
|
gmtModified |
Long |
创建时间,时间戳,单位毫秒 |
|
creator |
User |
创建者 |
|
modifier |
User |
最近更新者 |
|
assignedTo |
User |
负责人 |
|
status |
Status |
状态 |
|
workitemType |
WorkitemType |
工作项类型,如 产品类需求…… |
|
space |
Space |
归属项目 |
|
subject |
String |
标题 |
|
document |
Document |
描述 |
|
parentIdentifier |
String |
父工作项的唯一标识,如父需求、父任务 |
|
customFieldValue |
List<CustomValue> |
自定义字段值 |
|
sprint |
List<Sprint> |
迭代 |
|
tag |
List<Tag> |
标签 |
|
tracker |
List<User> |
抄送人 |
|
participant |
List<User> |
参与人 |
|
verifier |
List<User> |
验证者 |
用户类型--User
|
字段名 |
字段类型 |
字段描述 |
|
identifier |
String |
用户的唯一标识 |
|
realName |
String |
用户真名 |
|
nickName |
String |
用户昵称 |
状态类型 -- Status
|
字段名 |
字段类型 |
字段描述 |
|
identifier |
String |
状态的唯一标识 |
|
name |
String |
状态中文名称 |
|
nameEn |
String |
状态英文名称 |
工作项类型 -- WorkitemType
|
字段名 |
字段类型 |
字段描述 |
|
identifier |
String |
工作项类型的唯一标识 |
|
name |
String |
工作项类型的中文名称 |
|
nameEn |
String |
工作项类型的英文名称 |
|
categoryIdentifier |
String |
工作项类别: 需求 -- Req 缺陷 -- Bug 任务 -- Task |
项目类型 -- Space
|
字段名 |
字段类型 |
字段描述 |
|
identifier |
String |
空间的唯一标识 |
|
name |
String |
空间的名称 |
文档类型 -- Document
|
字段名 |
字段类型 |
字段描述 |
|
content |
String |
内容 |
迭代 -- Sprint
|
字段名 |
字段类型 |
字段描述 |
|
identifier |
String |
迭代的唯一标识 |
|
name |
String |
迭代的名称 |
标签 -- Tag
|
字段名 |
字段类型 |
字段描述 |
|
identifier |
String |
标签的唯一标识 |
|
name |
String |
标签的名称 |
|
color |
String |
颜色 |
配置完成后,可以点击“进行Webhook请求测试”,测试配置是否正确。
云效Projex是新一代企业级研发协作平台,集成了敏捷研发项目管理的最佳实践,提供了针对项目、迭代、需求、缺陷等多个维度的协同管理以及相关的统计报告,让研发团队高效协作、践行敏捷并持续交付产品价值。且提供了关于单项目管理工作项的模板管理能力,模板管理分为字段模板及内容模板。通过字段模板管理可以统一特定类型的属性填写规则,提高协作的规范性;内容模板可以给定协作过程中的内容格式,提高协作的高效性。
点击下方链接,即可免费体验云效Projex
https://www.aliyun.com/product/yunxiao/project?channel=yy_0525
了解更多关于云效DevOps的最新动态,可微信搜索关注【云效】公众号;
福利:公众号后台回复【指南】,可获得《阿里巴巴DevOps实践指南》&《10倍研发效能提升案例集》;
看完觉得对您有所帮助别忘记点赞、收藏和关注呦;

我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div
总的来说,我对ruby还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用
我正在使用i18n从头开始构建一个多语言网络应用程序,虽然我自己可以处理一大堆yml文件,但我说的语言(非常)有限,最终我想寻求外部帮助帮助。我想知道这里是否有人在使用UI插件/gem(与django上的django-rosetta不同)来处理多个翻译器,其中一些翻译器不愿意或无法处理存储库中的100多个文件,处理语言数据。谢谢&问候,安德拉斯(如果您已经在rubyonrails-talk上遇到了这个问题,我们深表歉意) 最佳答案 有一个rails3branchofthetolkgem在github上。您可以通过在Gemfi
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭4年前。Improvethisquestion我想在固定时间创建一系列低音和高音调的哔哔声。例如:在150毫秒时发出高音调的蜂鸣声在151毫秒时发出低音调的蜂鸣声200毫秒时发出低音调的蜂鸣声250毫秒的高音调蜂鸣声有没有办法在Ruby或Python中做到这一点?我真的不在乎输出编码是什么(.wav、.mp3、.ogg等等),但我确实想创建一个输出文件。
给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru
我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t
我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚
Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack
在选择我想要运行操作的频率时,唯一的选项是“每天”、“每小时”和“每10分钟”。谢谢!我想为我的Rails3.1应用程序运行调度程序。 最佳答案 这不是一个优雅的解决方案,但您可以安排它每天运行,并在实际开始工作之前检查日期是否为当月的第一天。 关于ruby-如何每月在Heroku运行一次Scheduler插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8692687/
我有一个对象has_many应呈现为xml的子对象。这不是问题。我的问题是我创建了一个Hash包含此数据,就像解析器需要它一样。但是rails自动将整个文件包含在.........我需要摆脱type="array"和我该如何处理?我没有在文档中找到任何内容。 最佳答案 我遇到了同样的问题;这是我的XML:我在用这个:entries.to_xml将散列数据转换为XML,但这会将条目的数据包装到中所以我修改了:entries.to_xml(root:"Contacts")但这仍然将转换后的XML包装在“联系人”中,将我的XML代码修改为