Tag: Aras

  • Aras Innovator – Project 展 WBS

    SELECT DISTINCT PROJECT.ID
    , PROJECT.PROJECT_NUMBER, PROJECT.[NAME], PROJECT.DATE_START_SCHED, PROJECT.DATE_DUE_SCHED
    , EMT_1_NAME=EMT_1.[NAME]
    , EMT_2_NAME=EMT_2.[NAME]
    , ACT_2_NAME=ACT_2.[NAME], ACT_2_DATE_START_SCHED=ACT_2.DATE_START_SCHED, ACT_2_DATE_START_ACT=ACT_2.DATE_START_ACT, ACT_2_DATE_DUE_SCHED=ACT_2.DATE_DUE_SCHED, ACT_2_DATE_DUE_ACT=ACT_2.DATE_DUE_ACT
    , EMT_3_NAME=EMT_3.[NAME]
    , ACT_3_NAME=ACT_3.[NAME], ACT_3_DATE_START_SCHED=ACT_3.DATE_START_SCHED, ACT_3_DATE_START_ACT=ACT_3.DATE_START_ACT, ACT_3_DATE_DUE_SCHED=ACT_3.DATE_DUE_SCHED, ACT_3_DATE_DUE_ACT=ACT_3.DATE_DUE_ACT
    , EMT_4_NAME=EMT_4.[NAME]
    , ACT_4_NAME=ACT_4.[NAME], ACT_4_DATE_START_SCHED=ACT_4.DATE_START_SCHED, ACT_4_DATE_START_ACT=ACT_4.DATE_START_ACT, ACT_4_DATE_DUE_SCHED=ACT_4.DATE_DUE_SCHED, ACT_4_DATE_DUE_ACT=ACT_4.DATE_DUE_ACT
    FROM PROJECT
    INNER JOIN WBS_ELEMENT EMT_1 ON EMT_1.ID=PROJECT.WBS_ID    -- Level 1 item
    -- WBS level 1 do not have activity items
    --LEFT JOIN WBS_ACTIVITY2 WA_1 ON WA_1.SOURCE_ID=EMT_1.ID
    --LEFT JOIN ACTIVITY2 ACT_1 ON ACT_1.ID=WA_1.RELATED_ID
    LEFT JOIN SUB_WBS SW_1 ON SW_1.SOURCE_ID=EMT_1.ID
    LEFT JOIN WBS_ELEMENT EMT_2 ON EMT_2.ID=SW_1.RELATED_ID    -- Level 2 item
    LEFT JOIN WBS_ACTIVITY2 WA_2 ON WA_2.SOURCE_ID=EMT_2.ID
    LEFT JOIN ACTIVITY2 ACT_2 ON ACT_2.ID=WA_2.RELATED_ID
    LEFT JOIN SUB_WBS SW_2 ON SW_2.SOURCE_ID=EMT_2.ID
    LEFT JOIN WBS_ELEMENT EMT_3 ON EMT_3.ID=SW_2.RELATED_ID    -- Level 3 item
    LEFT JOIN WBS_ACTIVITY2 WA_3 ON WA_3.SOURCE_ID=EMT_3.ID
    LEFT JOIN ACTIVITY2 ACT_3 ON ACT_3.ID=WA_3.RELATED_ID
    LEFT JOIN SUB_WBS SW_3 ON SW_3.SOURCE_ID=EMT_3.ID
    LEFT JOIN WBS_ELEMENT EMT_4 ON EMT_4.ID=SW_3.RELATED_ID    -- Level 4 item
    LEFT JOIN WBS_ACTIVITY2 WA_4 ON WA_4.SOURCE_ID=EMT_4.ID
    LEFT JOIN ACTIVITY2 ACT_4 ON ACT_4.ID=WA_4.RELATED_ID
    LEFT JOIN SUB_WBS SW_4 ON SW_4.SOURCE_ID=EMT_4.ID
    WHERE PROJECT.ID=?
  • Aras Innovator – 表單新增時自動新增單身資料

    在表單單頭 View 的 onFormLoad Client Event,透過 is new 或 action 是否為 add,來判斷是否為新單據,然後新增關係

    var itmThis = document.thisItem;
    if (itmThis.isNew() || itmThis.getAction()=='add') {
    var inno = itmThis.newInnovator();
        for (var i=0; i<10; i++) {
            var relItem = inno.newItem('{RELATIONSHIP ITEMTYPE}', 'add');

    // set properties if needed

            itmThis.addRelationship(relItem);
        }
    }
  • Aras Innovator – 修改表單上面Item/Element的Show/Hidden

    JavaScript

    var myElement = getFieldByName(“myFieldName”);
    myElement.style.visibility = “hidden”;
    myElement.style.visibility = “visible”;
  • Aras Innovator – 檔案下載記錄

    檔案的下載動作是透過 ItemType:Vault 來運行。

    檔案 ItemType:File 與 ItemType:Vault 是透過 ItemType:Locate 關聯。

    因此,當使用者有下載檔案動作時,便會觸發 ItemType:Vault 和 ItemType:Locate 的 [Get] 動作。故我們可以藉由在 ItemType:Locate 的 Server Method : OnAfterGet,實作檔案下載記錄。透過 source_id 取得包含檔案名稱等檔案資訊、透過呼叫 Innovator.getUserID() 取得下載人的資料。

    Aras.Server.Security.Identity plmIdentity = Aras.Server.Security.Identity.GetByName("Aras PLM");
    bool permissionWasSet = Aras.Server.Security.Permissions.GrantIdentity(plmIdentity);

    Innovator inno = this.getInnovator();

    try {
    string sqlCommandText = string.Format(
    @"INSERT INTO file_get_records(username,filename)
    SELECT [USER].KEYED_NAME,[FILE].[FILENAME]
    FROM [USER],[FILE]
    WHERE [USER].ID='{0}' AND [FILE].ID='{1}'", inno.getUserID(), this.getProperty("source_id"));
    inno.applySQL(sqlCommandText);
    }
    finally {
    if (permissionWasSet) {
    Aras.Server.Security.Permissions.RevokeIdentity(plmIdentity);
    }
    }

    return this;
  • Aras Innovator – Method臨時提升權限及使用時機

    當Method需要用到SQL指令時,需透過臨時提升權限的方式來執行。而其他情境則幾乎不適用!即使臨時提升權限,仍無法以目標Identity的權限對ItemType做異動。

    Aras.Server.Security.Identity plmIdentity = Aras.Server.Security.Identity.GetByName(“Innovator Admin”);
    bool PermissionWasSet = Aras.Server.Security.Permissions.GrantIdentity(plmIdentity);
    Innovator inno = this.getInnovator();

    string sqlCmd = “UPDATE Document SET ineffective_date=GETUTCDATE() WHERE ID=’”+this.getID()+”‘”;
    inno.applySQL(sqlCmd);

    if (PermissionWasSet == true)
    Aras.Server.Security.Permissions.RevokeIdentity(plmIdentity);

    return this;

  • Aras Innovator – Convert date string format for Date property

    // Convert date string format for Date property.
    // Example: 2022/11/16
    var i18n = inno.getI18NSessionContext();
    finishedProductDate = i18n.ConvertToNeutral(finishedProductDate,"date","short_date");
  • Aras Innovator – 調整表單資料的字體大小

    透過撰寫 Form 的 CSS,來調整表單[資料]的呈現方式,如字體大小等。

  • Aras Innovator – 查詢使用者活動資訊

    Aras Innovator 系統並無提供使用者活動歷史紀錄的功能,但仍可透過以下方式取得使用者的活動紀錄:

    1. 在文件、料件等等各個ItemType項目的編輯、流程簽核紀錄
    2. Social 討論紀錄 (需付費訂閱成 Subscriber)
    3. 查詢當前在線使用者 (圖1)
    4. 查詢個別使用者最後登入時間 (圖2、圖3)
    圖1 查詢當前在線使用者
    圖2 使用 root 帳號編輯 Itemtype – User 的 last_login_date
    圖3 在ItemType – User查看使用者的最後登入時間
  • Aras Innovator – 如何編輯 TOC (Table Of Content) 的內容

    直接編輯 清單Lists 內的 Categories 即可。