熱門文章

2011年2月23日 星期三

在Innovator的流程表單上加一個檢視Sign-off的頁箋

標準系統中,若是要檢視流程簽審的記錄,通常都必需自My InBasket中或該流程表單中先去檢視該表單的Workflow,然後在檢視Workflow的畫面上點擊View Sign-Off才能看到該記錄.
我自Innovator的Demo DB看到一個作法,它是將Sign-Off作成一個頁箋,放在流程表單中,使得檢視簽審記錄變得比較方便與快速,如圖:





在這兒將其作法貼出來供大家參考!
1) 建立一個Form,名為"Workflow Signoffs",並在其中加入二個HTML物件(calculate_html, result_iframe)
calculate_html的html內容如下(它的Field Physical: X=2,Y=0):

<script>
var Core_reportHTML = "<table/>";
function Core_loadProcessReport()
{
  if (!document.item || !document.item.xml) return;
  var reportHTML;

  if (document.item.getAttribute("action")=="add")
  {
    reportHTML = top.aras.getResource("", "imports_core.no_workflow_signoffs_exist");
  }
  else
  {
    var q = new top.Item("tmp", "tmp");
    q.loadAML("<Item type='Workflow' action='get' select='related_id(*)'>"+
                "<source_id>"+document.item.getAttribute("id")+"</source_id>"+
                "<related_id condition='is not null'/>"+
              "</Item>");
    q = q.apply();
    if (q.getItemCount()==1)
    {
      var processItem = q.getItemByIndex(0).node.selectSingleNode("related_id/Item");
      processItem.setAttribute("item_id_for_vote_now_link", document.item.getAttribute("id"));
      var report = top.aras.getItemByKeyedName("Report", "Workflow Process History");
      reportHTML = top.aras.runClientReport(report, "", processItem);
      reportHTML = reportHTML.replace(/width=""/g, "");
      reportHTML = reportHTML.replace(/height=""/g, "");
    }
    else
    {
      reportHTML = q.getErrorDetail() +"<br>"+ q.getErrorString() +"<br>"+ q.getErrorSource();
    }
  }
  Core_reportHTML = reportHTML;

  var ifr = document.getElementById("result_iframe_frame");
  var d = ifr.contentWindow.document.open();
  d.write(reportHTML);
  d.close();
  ifr.style.visibility = "visible";
}

window.attachEvent("onload", Core_loadProcessReport);
window.attachEvent("onload", expression_WorkflowSignoffs_setExpression);
window.attachEvent("onresize", expression_WorkflowSignoffs_setExpression);

function expression_WorkflowSignoffs_setExpression()
{
  document.body.scroll = "no";
  var field = document.getElementById('result_iframe_frame');
 
  var isIE7 = (top.aras.Browser.version == 7);

  field.width = isIE7? document.body.clientWidth+16 : document.body.clientWidth;
  field.height = document.body.clientHeight-25;
}

</script>
<button type="button" onclick="top.aras.saveString2File(Core_reportHTML, 'export2Excel');" style="background-color:white;border:none;cursor:hand;">
  <img src="../cbin/icons/16x16_icon_msExcel.gif" border='0' TITLE = "Export To Excel">
</button>
&nbsp;
<button type="button" onclick="top.aras.saveString2File(Core_reportHTML, 'export2Word');" style="background-color:white;border:none;cursor:hand;">
  <img src="../cbin/icons/16x16_icon_msWord.gif" border='0' TITLE = "Export To Word">
</button>
result_iframe的html內容如下(它的Field Physical: X=0,Y=25):

<iframe id="result_iframe_frame" frameborder="0"></iframe>

2) 在您的流程表單的ItemType上增加一個no related的Relationship,例如:名為wf1_signoff.(唯一別重複)

3) 編輯上個步驟建立的relationshiptype : wf1_signoff,並在其Relationship View頁箋中新增一條,Name欄指定world這個identity, Form欄指定步驟1所建立的workflow signoff.(如下圖),完成後, 存檔即可!


沒有留言: