TencentBlueKing / bk-itsm

ITSM-流程服务管理,通过可自定义设计的流程管理,同时关联蓝鲸智云的基础平台、公共组件,以满足IT服务的管理活动和场景需要。帮助用户规范内部管理流程,并提升管理效率。
MIT License
131 stars 93 forks source link

服务流程处理人字段增加角色后 后端如何修改? #797

Open yufuxiao opened 2 years ago

yufuxiao commented 2 years ago

image

后端目前只定位到这里: itsm\ticket\views\ticket.py create 346 行 itsm\ticket\views\ticket.py do_after_create 364 行 itsm\ticket\models\ticket.py do_after_create 3813 itsm\ticket\models\ticket.py do_before_enter_state 3832 itsm\ticket\models\ticket.py self.update_state_before_enter 3474

版本:2.6.1.386

大概猜测是在这个位置: image

里面业务不太熟悉,还请指教,加我 qq 交流:2573179560

hanshuaikang commented 2 years ago

不是这里,是 itsm.role.models.UserRole.get_users_by_type , 参考这个方法的实现哈。

yufuxiao commented 2 years ago

如果说我只增加一个部门领导这个处理人的话,简单的方法是不是可以使用组织架构,我在用户管理里面新建组织就叫部门领导, 这种方案是否可行

hanshuaikang commented 2 years ago

完全没毛病

hanshuaikang commented 2 years ago

用户组也可以实现

yufuxiao commented 2 years ago

OX6V7QQII~UW8VO2EJ7$G{7

这种方式的话可以实现吗

yufuxiao commented 2 years ago

这种方式是不是后端改动很大,函数太多了,调来调去的 看的晕

hanshuaikang commented 2 years ago

只是为了加处理人不太建议,改动其实也不大,不过没有必要

hanshuaikang commented 2 years ago

看实际场景

yufuxiao commented 2 years ago

这边是有这个需求,能否提供一个支持

yufuxiao commented 2 years ago

2573179560 加我一下

hanshuaikang commented 2 years ago

那就按照我的指引改 itsm.role.models.UserRole.get_users_by_type 代码就好

yufuxiao commented 2 years ago
def get_users_by_type(cls, bk_biz_id, user_type, users, ticket=None):
    """
    通过角色类型获取人名,返回人名列表
    """
    if user_type == "STARTER":
        return [ticket.creator] if ticket else []

    if user_type == "ORGANIZATION":
        return get_department_users(users, recursive=True)

    if user_type == "STARTER_LEADER":
        # 获取到当前提单人的leader
        return get_user_leader(users)

    # 新加的
    if user_type == "DEPARTMENT_LEADER":
        # 获取到当前提单人的部门 leader
        return get_user_department_leader(users)
yufuxiao commented 2 years ago

用户管理那边还要配置那个部门领导人字段吧, 应该是要先获取提单人部门信息,然后根据部门信息获取部门领导

hanshuaikang commented 2 years ago

参考实现 获取提单人的leader

yufuxiao commented 2 years ago

获取提单人的 leader 不一定是部门领导,现在是要获取部门领导

yufuxiao commented 2 years ago

你确定在这里面改就好? itsm.role.models.UserRole.get_users_by_type

hanshuaikang commented 2 years ago

不一定是部门领导,现在是要获取部门领导 这个要看用户管理支不支持的。我们只拉他的接口。

yufuxiao commented 2 years ago

我可以加部门领导人这个字段,打比方说是 department, 拿这个字段,然后当处理人

yufuxiao commented 2 years ago

你说是这个里面修改: itsm.role.models.UserRole.get_users_by_type 我觉得对 但感觉这里也要修改: image

刚接触这个产品 不太知道全流程怎么跑的 ,里面还有一个编排引擎 也很复杂

hanshuaikang commented 2 years ago

是的,但是整体改的地方不算多的

yufuxiao commented 2 years ago

帮忙整理一下