APP下载

OKR看板协作平台设计与实现

2018-03-29唐菁敏王红彬王朝阳张伟周旋

软件 2017年8期

唐菁敏 王红彬 王朝阳 张伟 周旋

摘要:针对传统效率协作方式在消息沟通不及时、处理的工作量大、信息透明度不高的等问题,提出了以精益思维视角代替传统工作协作方式,基于看板(Kan ban)管理开发思想,使用Spring MVC、Spring、My Batis(SSM)结合轻量级的My Sql搭建“OKR看板协作平台”,实现了看板模块、OKR规划模块、及一系列的配置,使系统实现了信息可视化,减轻业务沟通障碍。平台应用经部署和测试后,实验结果表明系统运行稳定、效果良好,并具有很好的扩展性和维护性。

关键词:效率协作平台;精益生产看板;OKRSSM

中图分类号:TP3 文献标识码:A DOI:10.3969/j.issn.l003_6970.2017.08.003

引言

随着互联网高速发展,高效协作平台已经开始逐步替代传统管理方式,获得更多企业团队认可。精益效率协作平台主要服务于高速发展的互联网公司,能够改善协作、优化管理,显著提高交付速度、质量和灵活性。使公司成员在处理问题中快速达成共识,为管理者更好的了解企业发展瓶颈,提高企业效率。

对于传统的企业管理方式,原始的思维存在效率低下,问题发现处理不及时,部门公共信息不公开透明等问题正严重阻碍公司发展。现阶段,国内大多数企业使用的仅仅是内部管理系统,或正处于纸质化或口头上的传达。在管理过程中,仅可展示一些公共信息,对于分配任务无法进行跟踪处理且无法及时通知到位,导致劳动强度大而工作效率低,容易产生错误并无历史记录进行对比。

基于以上背景,开发一套优秀的且适合公司发展的协作平台对一家互联网企业是至关重要的。本平台针对某互联网企业内部需求对员工处理问题流程进行量化分析,使用软件工程理论和精益思想对效率协作平台进行需求分析,通过吸收其他优秀的平台并根据分析文档完成了平台的设计和开发,旨在为企业提供更加方便的平台操作来达到最佳的工作协作效率。同时,本平台在需求分析过程和幵发过程中的种种实施方案,对现在国内外的工作协作平台的发展有很好的借鉴作用,更加广义来说该平台的模式对于时下热门的Dev Ops(Development Operations)和敏捷开发有良好的促进作用。

1 需求分析

本平台主要由看板管理思想和okr(Objectivesand Key Results)目标与关键成果法理论支持,可为平台提高信息的沟通效率和降低管理难度。下面分别介绍两大模块。

1.1 看板管理

看板管理是指为了达到JIT(JustIn Time准时制生产方式)而控制现场生产流程的工具。本平台利用看板的可视化工作流作为平台主要信息展示方法,让用户工作的内容和工作流程具体可见,并由管理者优化管理。平台看板模型如图1所示:

图中的每个卡片代表一个任务项,可包括:功能需求、产品缺陷、功能验证等一^系列任务。它们所在的列,表示其所处的阶段,可能是分析,生产,测试等,todo代表需要做的任务列表,doing代表正在处理的任务列。这些卡片,每经过一个阶段(图中的列)都会产生新信息,让管理者更加直观了解项目具体模块,也可为部门内部协作沟通提供了依据凭证。

1.2 OKR模块

OKR是一套定义和跟踪目标及其完成情况的管理工具和方法,相比传统KPI更适合在互联网公司运行。

1、 OKR不以考核为目标,是让人更加聚焦重要领域。

2、 对KR(关键结果)进行可量化的定义。

3、 OKR更加公开透明,可让员工获得相互认同。

图2中的执行者可以定义多个Objectives,每个下面有多个Key Result细化目标,Key Result下就是如何做的步骤,而步骤就关联看板上的每个卡片,这样执行者可宏观的查看季度,年度任务的整体完成情况和具体完成步骤的实施过程。

2 平台总体设计

2.1 平台技术架构

本平台设计模式使用MVC(Model View Controller)设计模式集成开发,M是指业务模型,V是指用户界面,C则是控制器,作为双向数据流的数据模式具有如下图3的特点。

遵循傳统的MVC模式,View页面由前端控制,Controller用于对网页中的操作或产生的数据流进行接收及传递,Model通过从不NController接收不同信息进行不同的业务逻辑处理。通过Model和View解耦以便得到更好的程序维护性最终完成标准的MVC模式开发。

在服务端使用JAVA开发环境,使用的技术主要是JAVAEE和SSM[11_12]技术框架。在符合JAVAEE技术规范下,完成对效率协作平台的功能实现。在前端使用Freemark+Ajax+Bootstrap技术实现,使用Freemark对展示数据及用户数据交互进行处理,使用Ajax技术连接服务器和客户端实现无刷新数据交互,使用Bootstrap技术简化前端页面美化提高系统前端实现标准,提高开发效率及减少系统维护难度。

2.2 功能模块

根据对用户需求信息进行系统的整体分析,本平台主要功能模块包含:看板模块、OKR规划模块、平台配置模块。下面对平台整体的各模块进行一次完整的功能展示。

1、看板模块:平台主要功能,主要包含创建看板,在看板内可创建列和泳道,并添加卡片,每卡片可根据用户需求添加不同类型数据类型,包括卡片编号,卡片名称,经办人,创建人,优先级,评论,任务进度图,子任务,历史记录等众多信息,通过填写fe息移动卡片不断是信息完善。并可通过看板设置页面控制卡片内信息如何展示,移动,也可修改需要展示的信息。

2、OKR模块:可以通过年度、季度、月度等来规划丁作计划,通过todo模块与看板中卡片关联实现互动,通过卡片的拖动完成,实时反馈到OKR模块,方便管理者查看项目整体速度。

3、平台配置模块:为符合公司内部门不同,职责不同,平台划分出业务线区分部门之间关系,通过用户权限限制用户的访问,使其只在其工作范围内沟通交流,只有拥有权限的人才可以跨业务线进行访问。

通过以上模块企业用户可以通过OKR模块对部门进行进度规划,部门之间协作交流可以通过看板进行数据流转展示,通过系统配置模块使部门在可控下高效的沟通协作。平台整体功能图如图4所示。

2.3 权限设置

为符合团队运营,体现不同业务人员对不同业务线下不同产品流程进行区分,方便不同权限管理人员进行可控的信息沟通。该系统已业务线来区分部门,并设置3种权限:普通用户,业务线管理员,超级管理员对应管理;

普通用户仅可在具有权限的业务线下对该业务线下看板下卡片拖动,信息填写等卡片的基本操作,只能使用已配置好的看板格式进行拖拽修改等,对OKR仅具有信息填写创建或删除;

业务线管理员在已具有的业务线对看板进行设置,管理,可以对该业务线下所有用户进行权限配置,并可添加删除看板或修看板内部工作流程,可查看该业务线下OKR规划。

超级管理员可以添加删除业务线,跨业务线进行查看修改操作,并对系统内所有用户进行权限配置,可查看所有业务线下OKR规划。

2.4 平台整体流程设计

根据上述效率协作平台的整体功能结构分析,本文对平台的整体流程进行设计布局,该流程可满足用户对实际管理和协作沟通流程的需要,为系统的开发设计提供业务逻辑参考。系统幵发的流程如图5所示。

2.5 平台主要功能实现

由于项目功能模块较多,所有下面仅介绍本文核心看板模块的设计与实现。

用户点击业务线下看板,请求进入后台处理,经过用户的权限验证,返冋看板信息和看板下包含的所有卡片简单信息。以下为后台处理部分核心代码:

@RequestMapping(M/doLoginM)

@ResponseBody

@RequestMapping(?f/{project}/executionmgt/kanban/{kanbanEn}n)

publicStringshowKanban(@PathVariableStringproject,@PathVariableStringkanbanEn,Stringsidear,HttpServletRequestrequest,Modelmodel)throwsException{

model.addAttribute(MblockReasonsM?list);

//利用Session獲取登录用户信息Useruser=(User)

reuest.getSession().getAttribute(MuserM);

//获得userKanbans和Kanbans两个集合的交集,如果存在相同的显示userKanbans中的,没有则显7Kkanbans中

ListdoubleKanban=getDoubleList(userKanbans,kanbans);

//查看用户看板和业务线权限

LOGGER.info(”showKanban,project:[{}],kanbanEn:[{}],visibleType:[{}],project,kanbanEn,KanbanVisibleTypeEnum.PRJVATE.getValue0);

//获取看板用户权限

KanbanUserRoleroleParam=newKanbanUserRole0;roleParam.setAccountName(user.getAccountName0);roleParam.setKanbanld(kanban.getKanbanld());roleParam.setApplyStatus(KanbanUserApplyStatusEnum.PASS.getValue());

KanbanUserRolekanbanUser-Role=kanbanUserRoleService.getRoleByParam(roleParam);

UserRoleProjectparam=newUserRoleProject();param.setUserAccountName(user.getAccountName0);param.setProjectId(bl.getProjectid0);

UserRoleProjectUserRoleProjectuserRoleProjectService.getByParam(param);if(kanbanUserRole==null){

LOGGER.mfo(f没有此看板的权限,project:[{}],kanbanEn:[{}],visibleType:[{}]f,

project,kanbanEn,KanbanVisibleTypeEnum.

PRIVATE.getValue0);

ffmetronic/executionmgt/kanban/kanbann;

}else{

LOGGER.mfo(”此看板的用户权限,project:[{}],kanbanEn:[{}],visibleType:[{}],roleId:

[{}]M?project,kanbanEn,KanbanVisibleTypeEnum.PRIVATE.getValue()?kanbanUserRole.getRoleId0);if(userRoleProject==null){

thrownewException(系統提示:看板的业务线权限您没有配置,请联系负责人进行相关处理!n);}}

//获取该看板的所有卡片

model.addAttribute(issues,issues);model.addAttribute(McardLeverf,LeanConstant.cardLevel);kanbanBacklogSer-

vice.getKanbanBacklogsByKanbanId(kanban.getKanbanld()));

model.addA.ttribute(ffsidebarM,sidebar);model.addAttrib

ute(MkanbanPlanningff?kanbanLabelDictionaryService.

getAHPlanningName0);

Map

LOGGER.mfo(n可拖动列的集合selectEnableColumns:size:[{}],colMap.size());

Stringcolumns=JSON.toJSONString(colMap);

//Stringcolumns=columns=columns.replace(?\?M,?\M);model.addAttribute(?fEnablecolumnIdM,columns);}}

3 系统测试

本平台在开发中各个迭代阶段,都严格遵循标准的软件工程思想,对每一个上线的版本进行了严格的单元测试和回归测试,以保证系统稳定性和安全性。

通过测试用例保证了产品逻辑的正确性和预期效果的一致性,对以上对本平台的系统测试,我们可以确信所测试功能的健壮性,最后我们通过平台对正确或错误的用例的响应方法,可以明确看到平台具有如下优势:

(1)平台功能模块化,实现了“对外开放,对内闭合”的可扩展实现。

(2)平台操作简单,对错误操作有良好的提示,

实现了良好的人机交互体验

(3)平台某些模块对并发操作做了良好的支持,使系统具有良好的健壮性。

部分关键页面的效果图如图6、图7所示:

4 结语

本平台针对互联网企业快速发展,针对公司内部管理过程信息化的过程,通过SSM框架,并使系统能随用户量和业务的增大相应成长,设计并建立了一个高效稳定的、易于扩展的OKR看板协作平台。为企业管理者提供了一个新型的管理思路,提供给企业员工和管理者一个信息交流的优质高效协作平台。通过使用软件工程常用技术栈,实现了效率协作平台的主要功能,页面简洁美观且具有良好的响应速度,得到了良好用户体验效果。总的来说本系统从需求分析到具体的产品实现都有涉及到市场需要方面的考虑,该系统在企业实施后,运行良好,完成了项目初期的需求。