ARIS项目落地利刃之风险导入

本文介绍了ARIS项目在落地过程中的关键步骤——风险导入,作者指出这一环节对于项目的成功至关重要,并预告将发布ARIS脚本编程系列教程。

ARIS项目落地利刃之风险导入

 
(function () {
    const msg = Dialogs.MsgBox.bind(Dialogs);

    const glang = Context.getSelectedLanguage();
    const gGroup = ArisData.getSelectedGroups();
    const activeDb = ArisData.getActiveDatabase();
    const fontStyle = activeDb.createFontStyle("test", glang, true);
    if (gGroup.length == 0) {
        msg('必须选择组');
        return;
    }

    //创建方式
    // 1.选择导入文件
    // 2.创建风险图,名称为文件名
    // 


    const reader = readExcel();
    if (!reader) {
        return;
    }
    //启动扫描行开始
    const startRow = 2;
    //从第12列开始扫描
    const startCol = 12;
    //停止列
    const stopCol = 0;
    //文件索引
    const sheetIndex = 0;

    const ret = reader.readAlarmDir(sheetIndex, startRow, startCol, stopCol);

    const detail = reader.readAlarmDetail(1, 2, 0, 19);

    reader.fillControll(ret, detail);
    if (ret) {

        //return;
        newModelByTree(gGroup[0], ret);
    }


    function getFileInfo(name) {
        return name.split('.');
    }

    function selectFile(msg, isMulti, ext) {
        var defaultExt = "全部|*.*";
        if (ext) {
            defaultExt = ext;
        }
        return Dialogs.getFilePath(null, defaultExt, null, msg, isMulti ? 8 : 0);
    }

    //
    function newModelByTree(group, sour) {

        function getAttObj(obj, attNum) {
            return obj.Attribute(attNum, glang);
        }

        function getAttStr(obj, attNum) {
            return String(getAttObj(obj, attNum).getValue());
        }

        function setAttStr(obj, attNum, val) {
            return getAttObj(obj, attNum).setValue(val);
        }

        function getId(objDef, searchKey) {
            var id = typeof searchKey !== 'undefined' ? searchKey : Constants.AT_ID;
            return getAttStr(objDef, id);
        }

        function setId(objDef, id, searchKey, setKey) {
            if (typeof searchKey !== 'undefined') {
                setAttStr(objDef, searchKey, setKey);
            }
            setAttStr(objDef, Constants.AT_ID, id);
        }

        function newModel(group, name, modelType, id, searchKey, setKey) {
            var obj = group.CreateModel(modelType, name, glang);
            setId(obj, id, searchKey, setKey)
            return obj;
        }

        function newObjDef(g, objDefType, symbolNum, name, id, searchKey, setKey) {
            var obj = g.CreateObjDef(objDefType/*Constants.OT_RISK_CATEGORY*/, name, glang);
            obj.setDefaultSymbolNum(symbolNum/*Constants.ST_RISK_CATEGORY*/, true);
            setId(obj, id, searchKey, setKey);
            return obj;
        }


        function isArray(x) {
            return Object.prototype.toString.call(x) === '[object Array]';
        }


        function newChildGroup(parentGroup, name, id) {
            var g = parentGroup.CreateChildGroup(name, glang);
            setId(g, id);
            return g;
        }

        function getGroups(group) {
            return group.Childs();
        }

        function newAssignModel(objDef, model) {
            return objDef.CreateAssignment(model, false);
        }



        function updateAttr(objDef, attType, newValue) {
            if (getAttStr(objDef, attType) !== newValue) {
                setAttStr(objDef, attType, newValue);
            }
        }


        function newPointArray(n) {
            return java.lang.reflect.Array.newInstance(java.awt.Point, n);
        }

        function newPoint(x, y) {
            return new java.awt.Point(x, y);
        }


        function newCxnOcc(sourOcc, targetOcc, cxnType) {
            var sourModel = sourOcc.Model();
            var sourDef = sourOcc.ObjDef();
            var targetDef = targetOcc.ObjDef();
            var list = sourDef.CxnList([sourModel]);
            list = list.filter(function (x) {
                return x.TypeNum() === cxnType;
            });
            var cxnDef;
            for (var i = 0; i < list.length; i++) {
                var cxn = list[i];
                if (cxn.TargetObjDef().equals(targetDef)) {
                    cxnDef = cxn.TargetObjDef();
                    return;
                }
            }

            var r = sourModel.CreateCxnOcc(cxnDef ? false : true, sourOcc, targetOcc, cxnType, newPointArray(0));
            if (!r) {
                throw new Error('create fail')
            }
            return r;
        }



        function markLevel(arr, level) {
            for (var i = 0; i < arr.length; i++) {
                arr[i].level = level;
                markLevel(arr[i].children, level + 1);
            }
        }

        function beyondMusic(model, headOcc) {

            var occ = headOcc;

            var x = occ.X();
            var y = o
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值