EOS學習系統---BPS工作流程
1、首先建立一個“報銷單審批的”流程,然後定義不同的url頁面和對應的邏輯流;
2、具體案例實現如下:
3、表單錄入頁面:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" session="false" %> <%@page import="com.eos.data.datacontext.UserObject" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <!-- - Author(s): Administrator - Date: 2018-08-27 17:13:12 - Description: --> <head> <title>報銷單錄入</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> <script src="<%= request.getContextPath() %>/common/nui/nui.js" type="text/javascript"></script> </head> <% UserObject userObject =(UserObject)request.getSession().getAttribute("userObject"); //通過頁面的workItemID獲取工作項詳細資訊workItem Long workItemID = (Long)request.getAttribute("workItemID"); %> <body> <fieldset style="border:solid 1px #aaa;position:relative;margin:5px 2px 0px 2px;"> <legend> 操作員 </legend> <div id="dataform1" style="padding-top:5px;"> <!-- hidden域 --> <input class="nui-hidden" name="trainexpenseinfo.pid"/> <div class="nui-hidden" name="trainexpenseinfo.empid" value="<%=userObject.getUserId() %>"></div> <div class="nui-hidden" name="trainexpenseinfo.processinstid" ></div> <div class="nui-hidden" name="workItemID" id="workItemID"></div> <table style="width:100%;height:95%;table-layout:fixed;" class="nui-form-table"> <tr> <td class="form_label"> 報銷單編號: </td> <td colspan="1"> <input class="nui-textbox" name="trainexpenseinfo.expcode"/> </td> </tr> <tr> <td class="form_label"> 報銷人姓名: </td> <td colspan="1"> <input class="nui-textbox" name="trainexpenseinfo.empname" value='<%=userObject.getUserName() %>'/> </td> </tr> <tr> <td class="form_label"> 報銷金額: </td> <td colspan="1"> <input class="nui-textbox" name="trainexpenseinfo.expmoney"/> </td> </tr> <tr> <td class="form_label"> 報銷日期: </td> <td colspan="1"> <input class="nui-datepicker" name="trainexpenseinfo.expdate"/> </td> <td class="form_label"> 是否是預算內專案: </td> <td colspan="1"> <input class="nui-dictcombobox" dictTypeId="TRAIN_YESNO" name="trainexpenseinfo.isbugetitem"/> </td> </tr> <tr> <td class="form_label"> 部門經理: </td> <td colspan="1"> <input id="manager" class="nui-textbox" name="trainexpenseinfo.manager" enabled="false"/> </td> <td class="form_label"> 部門經理意見: </td> <td colspan="1"> <input class="nui-textarea" name="trainexpenseinfo.manageradvice" enabled="false"/> </td> </tr> <tr> <td class="form_label"> 財務經理: </td> <td colspan="1"> <input id="auditor" class="nui-textbox" name="trainexpenseinfo.auditor" enabled="false"/> </td> <td class="form_label"> 財務經理意見: </td> <td colspan="1"> <input class="nui-textarea" name="trainexpenseinfo.auditoradvice" enabled="false"/> </td> </tr> </table> </div> </fieldset> <div class="nui-toolbar" style="padding:0px;" borderStyle="border:0;"> <table width="100%"> <tr> <td style="text-align:center;" colspan="4"> <a class="nui-button" iconCls="icon-save" onclick="onOk()"> 儲存 </a> <span style="display:inline-block;width:25px;"> </span> <a class="nui-button" iconCls="icon-save" onclick="onConfirm()"> 提交 </a> <span style="display:inline-block;width:25px;"> </span> <a class="nui-button" iconCls="icon-cancel" onclick="onCancel()"> 取消 </a> </td> </tr> </table> </div> <script type="text/javascript"> nui.parse(); var form = new nui.Form("#dataform1"); form.setChanged(false); //debugger; var workitemid = <%=workItemID %>; if(workitemid !== null){ loadData(); } function onConfirm(){ confirmData(); } function onOk(){ saveData(); } function setData(data){ data = nui.clone(data); var json = nui.encode({trainexpenseinfo:data}); $.ajax({ url:"com.primeton.train.bps.expenseService.getExpense.biz.ext", type:'POST', data:json, cache:false, contentType:'text/json', success:function(text){ obj = nui.decode(text); form.setData(obj); form.setChanged(false); } }); } function loadData(){ var form = new nui.Form("#dataform1"); var json = nui.encode({workItemID:<%=workItemID %>}); $.ajax({ url:"com.primeton.train.bps.expenseService.getExpenseByWID.biz.ext", type:'POST', data:json, cache:false, contentType:'text/json', success:function(text){ obj = nui.decode(text); form.setData(obj); nui.get("workItemID").setValue(<%=workItemID %>); var empid = nui.get("empid").getValue(); if(empid == null || empid == undefined || empid == ""){ nui.get("empid").setValue(<%=userObject.getUserId() %>); nui.get("expname").setValue("<%=userObject.getUserName() %>"); } } }); } function confirmData(){ form.validate(); if(form.isValid()==false) return; var data = form.getData(false,true); var json = nui.encode(data); $.ajax({ url:"com.primeton.train.bps.expenseService.confirmExpense.biz.ext", type:'POST', data:json, cache:false, contentType:'text/json', success:function(text){ var returnJson = nui.decode(text); if(returnJson.exception == null){ CloseWindow("saveSuccess"); }else{ nui.alert("儲存失敗", "系統提示", function(action){ if(action == "ok" || action == "close"){ //CloseWindow("saveFailed"); } }); } } }); } function saveData(){ form.validate(); if(form.isValid()==false) return; var data = form.getData(false,true); var json = nui.encode(data); $.ajax({ url:"com.primeton.train.bps.expenseService.updateExpense.biz.ext", type:'POST', data:json, cache:false, contentType:'text/json', success:function(text){ var returnJson = nui.decode(text); if(returnJson.exception == null){ CloseWindow("saveSuccess"); }else{ nui.alert("儲存失敗", "系統提示", function(action){ if(action == "ok" || action == "close"){ //CloseWindow("saveFailed"); } }); } } }); } function onReset(){ form.reset(); form.setChanged(false); } function onCancel(){ CloseWindow("cancel"); } function CloseWindow(action){ if(action=="close"){ }else if(window.CloseOwnerWindow) return window.CloseOwnerWindow(action); else return window.close(); } </script> </body> </html>
4、對應的邏輯流
獲取工作項明細:通過頁面傳入的workItemID,使用BPS API的構件queryWorkItemDetail4SDO查詢workitem工作項詳細資訊;
賦值:workitem查詢出來後,將其包含的processinstid賦值給業務表的processinstid,便於查詢業務表資訊;
獲取表單資訊:通過processinstid與業務表的關聯,可以查詢業務表資訊。
獲取報銷單編號:表單錄入成功後,點選提交,轉向下一活動“提交審批流程”,獲取報銷單編號是為了建立流程例項時,為流程名稱和描述起名賦值;在這一活動中存在一個流程是否啟動的判斷,通過業務表資料中的processinstid是否為null或empty來判斷流程是否啟動; 賦值流程例項描述和名稱:將expcode作為字尾,為建立的流程例項描述和名稱賦值; 建立流程例項:BPS API構件庫中的元件,是用來建立流程例項,需要傳入三個引數,分別是:流程例項名稱,流程例項描述,流程例項路徑(即要提交的流程全名),返回一個流程例項id; 賦值流程例項id:將建立好的流程例項id賦值給業務表中的processinstid,便於後期查詢業務表資料資訊; 空操作:一個過渡圖元,用來連線流程啟動後的下一活動。流程啟動後,通過流程例項id判斷業務表中是否存在該條資料記錄,存在,則走update的邏輯流,不存在,則走add的邏輯流; 構造相關資料:通過業務表單的資訊,賦值給流程活動中需要的相關資料(即條件資料); 設定相關資料:呼叫BPS API的相關構件setRelativeDataBatch(批量設定相關資料),引數是通過processinstid,設定relativeData; 啟動流程例項並完成第一個工作項:相關資料設定完成後,通過判斷workItemID是否為null或empty,判斷若流程未啟動,則呼叫startProcessInstAndFinishFirstWorkItem構件,入參為processinstid,事務操作設定為false,沒有其他的引數null; 流程已啟動直接完成工作項:相關資料設定完成後,若流程已啟動,則呼叫finishWorkItem構件,入參為workItemID,事務操作仍設定為false。
5、審批頁面
<div class="nui-toolbar" style="padding:0px;" borderStyle="border:0;"> <table width="100%"> <tr> <td style="text-align:center;" colspan="4"> <a class="nui-button" iconCls="icon-save" onclick="onAgree()"> 同意 </a> <span style="display:inline-block;width:25px;"> </span> <a class="nui-button" iconCls="icon-save" onclick="unAgree()"> 不同意 </a> <span style="display:inline-block;width:25px;"> </span> <a class="nui-button" iconCls="icon-cancel" onclick="onCancel()"> 取消 </a> </td> </tr> </table> </div> <script type="text/javascript"> nui.parse(); var form = new nui.Form("#dataform1"); form.setChanged(false); loadData(); function onAgree(){ approvalData("1"); } function unAgree(){ approvalData("0"); } function setData(data){ data = nui.clone(data); var json = nui.encode({trainexpenseinfo:data}); $.ajax({ url:"com.primeton.train.bps.expenseService.getExpense.biz.ext", type:'POST', data:json, cache:false, contentType:'text/json', success:function(text){ obj = nui.decode(text); form.setData(obj); form.setChanged(false); } }); } function loadData(){ var form = new nui.Form("#dataform1"); var json = nui.encode({workItemID:<%=workItemID %>}); $.ajax({ url:"com.primeton.train.bps.expenseService.getExpenseByWID.biz.ext", type:'POST', data:json, cache:false, contentType:'text/json', success:function(text){ obj = nui.decode(text); form.setData(obj); nui.get("workItemID").setValue(<%=workItemID %>); var empid = nui.get("empid").getValue(); if(empid == null || empid == undefined || empid == ""){ nui.get("empid").setValue(<%=userObject.getUserId() %>); nui.get("expname").setValue("<%=userObject.getUserRealName() %>"); } } }); } function approvalData(dealResult){ var form = new nui.Form("#dataform1"); form.setChanged(false); form.validate(); if(form.isValid()==false) return; var data = form.getData(); data.dealResult = dealResult; var json = nui.encode(data); $.ajax({ url:"com.primeton.train.bps.expenseService.approvalExpense.biz.ext", type:'POST', data:json, cache:false, contentType:"text/json", success:function(text){ var returnJson = nui.decode(text); if(returnJson.exception==null){ CloseWindow("ok"); }else{ nui.alert("提交失敗","系統提示",function(action){ if(action == "ok" || action == "close"){ //CloseWindow("saveFailed"); } }); } } }); } function saveData(){ form.validate(); if(form.isValid()==false) return; var data = form.getData(false,true); var json = nui.encode(data); $.ajax({ url:"com.primeton.train.bps.expenseService.updateExpense.biz.ext", type:'POST', data:json, cache:false, contentType:'text/json', success:function(text){ var returnJson = nui.decode(text); if(returnJson.exception == null){ CloseWindow("saveSuccess"); }else{ nui.alert("儲存失敗", "系統提示", function(action){ if(action == "ok" || action == "close"){ //CloseWindow("saveFailed"); } }); } } }); } function onReset(){ form.reset(); form.setChanged(false); } function onCancel(){ CloseWindow("cancel"); } function CloseWindow(action){ if(action=="close"){ }else if(window.CloseOwnerWindow) return window.CloseOwnerWindow(action); else return window.close(); } </script> </body> </html>
6、經理審批邏輯流
經理審批流程:
首先,需要將表單資訊查詢出來並展示,將業務表資訊賦值給頁面上對應的欄位,點選同意或不同意之後,重新獲取表單資訊,將頁面上需要傳遞的資訊賦值給業務表;
然後,呼叫更新邏輯流,僅更新被修改的內容;
設定相關資料:將所需要的條件資料進行設定完成後,呼叫finishWorkItem構件完成工作項。
7、財務審批邏輯流
財務審批流程:
首先,需要將表單資訊查詢出來並展示,將業務表資訊賦值給頁面上對應的欄位,點選記賬之後,重新獲取表單資訊,將頁面上需要傳遞的資訊賦值給業務表;
然後,呼叫更新邏輯流,僅更新被修改的內容;
完成工作項:由於財務審批流程是最後一項活動,沒有分支且只需要一個自動活動完成記賬狀態的修改即可,所以無需設定相關資料,直接呼叫finishWorkItem構件完成工作項。
對於最後一項活動設定為自動活動,即修改一個欄位的值,可以通過自動活動的“應用配置”tab頁進行設定。
相關推薦
EOS學習系統---BPS工作流程
1、首先建立一個“報銷單審批的”流程,然後定義不同的url頁面和對應的邏輯流; 2、具體案例實現如下: 3、表單錄入頁面: <%@ page language="java" contentType="text/html; charset=UTF-8" pag
七月演算法機器學習筆記6 -- 工作流程與模型優化
這套筆記是跟著七月演算法四月機器學習班的學習而記錄的,主要記一下我再學習機器學習的時候一些概念比較模糊的地方,具體課程參考七月演算法官網:http://www.julyedu.com/ 特徵工程總
一個簡單的時間片輪轉多道程序內核操作系統工作流程
gson star 高級 time author family num 個數 count 一.操作系統工作概述 存儲程序計算機工作模型,計算機系統最最基礎性的邏輯結構; 函數調用堆棧,高級語言得以執行的基礎; 中斷。多道程序操作系統的基點。 二.代
機器學習工作流程第一步:如何用Python做數據準備?
pandas 整數 情況 意思 編程練習 人工智能 簡單的 準備工作 標題 這篇的內容是一系列針對在Python中從零開始運用機器學習能力工作流的輔導第一部分,覆蓋了從小組開始的算法編程和其他相關工具。最終會成為一套手工制成的機器語言工作包。這次的內容會首先從數據準備開始。
RDIFramework.NET ━ .NET快速信息化系統開發框架 ━ 工作流程組件介紹
質量 可定制 soa 發包 三方 種類 control eight 統計 RDIFramework.NET ━ .NET快速信息化系統開發框架 工作流程組件介紹 RDIFramework.net,基於.NET的快速信息化系統開發、整合框架,給用戶和開發者最佳的.Net框架
簡述計算機從加電到啟動系統時主板的工作流程
主板工作流程加電自檢-->BIOS信息-->顯卡的參數-->CPU的參數-->內存的參數-->硬盤的參數-->光驅的參數-->顯示PCI等主板的其他的I/O等參數-->RAID卡信息(如果有)-->BIOS將更新ESCD最後給出(Verifying DMI
機器學習(二)工作流程與模型調優
發生 較高的 mode lan 包含 因此 增加 絕對值 輸入 上一講中主要描述了機器學習特征工程的基本流程,其內容在這裏:機器學習(一)特征工程的基本流程 本次主要說明如下: 1)數據處理:此部分已經在上一節中詳細討論 2)特征工程:此部分已經在上一節中詳細討論
區塊鏈系統的一般工作流程
通過 增加 商務 一份 資產 一個 能力 獨立 網絡 區塊鏈系統有很多種,第一個應用區塊鏈技術的軟件就是比特幣,事實上區塊鏈的概念就是比特幣帶出來的。到現在為止,已經出現了相當多的基於區塊鏈技術的衍生系統,比如閃電網絡、公證通、以太坊、超級賬本項目等。每一類系統都有自己的特
操作系統工作流程
圖片 time_c 堆棧 store memcpy 封裝 intern 時間片輪轉 基礎上 計算機有三個關鍵性機制:存儲程序計算機,堆棧機制和中斷機制 第一章中已經重點學習了存儲程序的計算機,接下來我們重點學習堆棧機制和中斷機制。 堆棧機制 堆棧機制是高級語言可以實現的基礎
三大框架(ssh)學習——Struts2工作流程分析
Struts2工作流程分析 STRUTS2框架內部流程 1. 客戶端傳送請求的tomcat伺服器。伺服器接受,將HttpServletRequest傳進來。 2. 請求經過一系列過濾器(如:ActionContextCleanUp、SimeMesh等) 3. Fil
View工作流程-相關學習
學習筆記 一、Android的UI層級繪製體系 Android中的Activity是作為應用程式的載體存在的,它代表一個完整的使用者介面並提供了視窗進行檢視繪製。 在這裡,我們這裡所說的檢視繪製,實質上就是在對View及其子類進行操作。而View作為檢視控制元件的頂層父類,在本文中會對其進行詳細分
EOS學習之路004--EOS的賬戶系統
比特幣和以太坊只有私鑰和地址的概念,而EOS賬戶可以是使用者自定義的字串[12個],但是EOS的賬戶需要付費才能建立,不像比特幣、ETH, EOS賬戶的功能: 1.每個賬戶可以傳送結構化的訊息給任意其他賬戶 2.每個賬戶可以定義處理訊息的指令碼 3.訊息處理指令碼也可以給其
SpringMVC的學習(八)——SpringMVC的工作流程及相關配置
一、SpringMVC詳細介紹 Spring Web MVC是一種基於Java的實現了Web MVC設計模式的請求驅動型別的輕量級Web框架,即使用了MVC架構模式的思想,將web層進行職責解耦,基於請求驅動指的就是使用請求-響應模型,框架的目的就是幫助我們簡化開發,Spring Web MVC
暢捷通T3、T6伺服器系統環境重灌工作流程
暢捷通T3、T6伺服器系統環境重灌工作流程1.檢視伺服器具體配置和型號,以便於配備系統安裝盤和驅動程式。2.確認SQL資料庫版本和補丁資訊;檢查用友原有自動備份的檔案是否存在;3.進入系統,用電腦管家查殺一下病毒,如果有病毒 拍圖留存上傳工作日報,同時發給客戶,提示做好二次資料的二次備份。 完畢後記錄
暢捷通T3、T6服務器系統環境重裝工作流程
附加 復制 star 查詢 管家 特殊 服務器 p地址 次數 暢捷通T3、T6服務器系統環境重裝工作流程1.查看服務器具體配置和型號,以便於配備系統安裝盤和驅動程序。2.確認SQL數據庫版本和補丁信息;檢查用友原有自動備份的文件是否存在;3.進入系統,用電腦管家查殺一下病毒
RDIFramework.NET ━ .NET快速資訊化系統開發框架 ━ 工作流程元件介紹
RDIFramework.NET ━ .NET快速資訊化系統開發框架 工作流程元件介紹 RDIFramework.NET,基於.NET的快速資訊化系統開發、整合框架,給使用者和開發者最佳的.Net框架部署方案。 1、RDIFramework.NET框架介紹 RDIFramework.NET,基於.
RDIFramework.NET ━ .NET快速資訊化系統開發框架 ━ 工作流程元件Web業務平臺
RDIFramework.NET ━ .NET快速資訊化系統開發框架 工作流程元件Web業務平臺 接前兩篇: 1、RDIFramework.NET 工作流程元件介紹 RDIFramework.NET框架V2.8以下版本不包含工作流程元件,在實際使用過程中,很多客戶提出了讓我們在框架
RDIFramework.NET ━ .NET快速資訊化系統開發框架 ━ 工作流程元件WinForm業務平臺
RDIFramework.NET ━ .NET快速資訊化系統開發框架 工作流程元件WinForm業務平臺 接上篇: 1、RDIFramework.NET 工作流程元件介紹 RDIFramework.NET框架V2.8以下版本不包含工作流程元件,在實際使用過程中,很多客戶提出了讓我
Struts2學習之1(Struts2的工作流程,動作類的編寫,struts.xml配置檔案的編寫)
Struts2的開始 Struts2的作用 現在專案一般都是按照三層架構來開發的,表現層,業務邏輯層,資料訪問層,Struts2就是用來代替servlet處理表現層的一種框架,用來處理頁面的請求跳轉與資料顯示等,Struts2裡面還是用servlet來實
Scrapy框架的學習(1.scrapy的概念以及scrapy的工作流程)
scrapy的概念 1.為什麼要學習Scrapy? 因為會讓我們的爬蟲更快、更強 2.什麼是scrapy? (1) Scrapy是一個為了爬取網站資料,提