19.移转 Aras PLM大小事-表单团队权限

本篇利用品保用的表单来说明
譬如一个问题处理单在工作流程中
会涉及好几个单位成员
那麽权限的编辑开放给特定几个人的话
则利用团队这个模组(team_id栏位)
https://ithelp.ithome.com.tw/upload/images/20210919/20106503Fx1FZ2qn6p.png

一般操作
1.手动建立团队
2.新增团队成员
3.加入表单

我另外将操作用客制程序改为
1.在问题单页签加入名单
2.储存问题单时,自动建立团队与成员

其他就是团队权限设定在问题单中
https://ithelp.ithome.com.tw/upload/images/20210919/20106503k46tkQ98ud.png

将以下程序码建立於Itemtype
https://ithelp.ithome.com.tw/upload/images/20210919/201065038S1gvnldvG.png

inn = this.getInnovator();
return main(this);
}
private Item GetTeam(string keyed_name){
    Item itmTeam = inn.newItem("Team","get");
    itmTeam.setProperty("name",keyed_name);
    itmTeam = itmTeam.apply();
    return itmTeam;
}
private Item CreateTeam(string keyed_name){
    Item itmTeam = inn.newItem("Team","add");
    itmTeam.setProperty("name",keyed_name);
    itmTeam = itmTeam.apply();
    return itmTeam;
}
private void UpdateTeamMember_QSIssue(string form_id,string team_id){
    Item itmManager = inn.newItem("JPC QS Issue Related Manager","get");
    itmManager.setProperty("source_id",form_id);
    itmManager =  itmManager.apply();
    if(itmManager.isError()==false){
        for(int i=0;i<itmManager.getItemCount();i++){
            Item itmMember = itmManager.getItemByIndex(i);
            Item chkTeam = CheckMember(team_id,itmMember.getProperty("related_id",""));
            if(chkTeam.isError()){
                AddMember(team_id,itmMember.getProperty("related_id",""),true);
            }
        }
    }
    itmManager = inn.newItem("JPC QS Issue Related Owner","get");
    itmManager.setProperty("source_id",form_id);
    itmManager =  itmManager.apply();
    if(itmManager.isError()==false){
        for(int i=0;i<itmManager.getItemCount();i++){
            Item itmMember = itmManager.getItemByIndex(i);
            Item chkTeam = CheckMember(team_id,itmMember.getProperty("related_id",""));
            if(chkTeam.isError()){
                AddMember(team_id,itmMember.getProperty("related_id",""),false);
            }
        }
    }
}
private Item AddMember(string team_id,string ident_id,bool is_manager){
    Item itmTeamIdent = inn.newItem("Team Identity","add");
    itmTeamIdent.setProperty("source_id",team_id);
    itmTeamIdent.setProperty("related_id",ident_id);
    if(is_manager){
        //团队主管Identity ID
        itmTeamIdent.setProperty("team_role","60EBF9D1BB584921A73FA2F8D74DAF80");
    }else{
        //团队一般角色Identity ID
        itmTeamIdent.setProperty("team_role","7635594273054F2BA32C1CADB31FD413");
    }
    itmTeamIdent = itmTeamIdent.apply();
    return itmTeamIdent;
}
private Item CheckMember(string team_id,string ident_id){
    Item itmTeamIdent = inn.newItem("Team Identity","get");
    itmTeamIdent.setProperty("source_id",team_id);
    itmTeamIdent.setProperty("related_id",ident_id);
    itmTeamIdent = itmTeamIdent.apply();
    return itmTeamIdent;
}
Innovator inn;
public Item main(Item thisItem){
Aras.Server.Security.Identity plmIdentity = Aras.Server.Security.Identity.GetByName("Aras PLM");
Boolean PermissionWasSet = Aras.Server.Security.Permissions.GrantIdentity(plmIdentity);
try{
    string keyed_name = thisItem.getProperty("keyed_name","");

    if(thisItem.getProperty("team_id","")==""){
        Item itmTeam = GetTeam(thisItem.getProperty("keyed_name",""));
        if(itmTeam.isError()){
            itmTeam = CreateTeam(thisItem.getProperty("keyed_name",""));
            if(itmTeam.isError()==false){
                if(thisItem.getType()=="QS Issue"){
                    UpdateTeamMember_QSIssue(thisItem.getID(),itmTeam.getID());
                }
            }
        }
        string sql = @"update qs_issue set team_id = '"+itmTeam.getID()+"' where id='"+thisItem.getID()+"'";
        
        return inn.applySQL(sql);
    }else{
        if(thisItem.getType()=="QS Issue"){
            UpdateTeamMember_QSIssue(thisItem.getID(),thisItem.getProperty("team_id",""));
        }
    }
}catch(Exception ex){
    return inn.newError("Error:"+ex.ToString());
}
if (PermissionWasSet) Aras.Server.Security.Permissions.RevokeIdentity(plmIdentity);
return thisItem;

<<:  LiteX/VexRiscv 简介与使用 (二点五) 天地分隔

>>:  IT铁人DAY 4-物件导向基本概念(3)

IOS 菜菜菜鸟30天挑战 Day-28 下拉式选单

大家有没有试过点开选项的时候选单会往下衍生,那就是下拉式选单啦~ 今天来教大家怎麽制作一个简易下拉式...

Day 12 ( 中级 ) 翻转大黄蜂音效 ( 二代板 )

翻转大黄蜂音效 ( 二代板 ) 教学原文参考:翻转大黄蜂音效 ( V2 ) 这篇文章是针对 micr...

会员管理网站实作篇 - (以律师谘询平台为例子) part 2

大纲 sitemap 架构 安装 Ultimate Member plugin UM三大表单 实作律...

[Day08 - React Native] 路由,使用 React Native Navigation

React Navigation 在这边使用 Wix/React Native Navigation...

【这些年我似是非懂的 Javascript】Day 28 - 物件 # Part 4 # 特性描述器 Combo

昨天分享了特性组合的一般单独的使用方法, 今天要来分享一下他们的 Combo 连技和相关用到的东西...