審批流程資料庫設計
A. 多級審核的資料庫怎麼設計啊
多級審核,這個最好通過許可權模塊來做。這樣,銷售部門,在查看市場部的時候,給予許可權不足的提示即可。至於多級審核,一樣,也可以通過表的設計來實現,沒見到你的架構如何,不好多說。
B. 審核流程的資料庫一般怎麼設計
1、用戶表
用戶ID
用戶角色(1:業務員,2:經理,3:總經理,4:總裁。。。)
用戶姓名
2、客戶表
客戶ID
客戶名稱
3、業務員客戶表
用戶ID(其實就是用戶表裡的用戶角色為業務員的用戶)
客戶ID
4、業務員移交客戶申請表
申請人用戶ID
申請移交的客戶ID
審批狀態(0:審批中,1:已審批。。。。)
移交後用戶ID
5、請假表
用戶ID
請假開始時間
請假結束時間
請假類別(1:事假、2:病假、3:婚假。。。。。)
審批狀態(0:審批中,1:已審批。。。。)
C. jbpm4.4開發審批流實現一個主任務流轉根據單據行項目分發不同人審核(請問這樣如何設計流程)
第一步 創建流程模板(通過畫圖得到xml描述文件) jbpm1會在資料庫Execution表中插入一條數據
* 第二步 獲取工作流引擎並指定啟動某個流程模板的實例,
* 1.啟動實例
* 2.流程變數(例如,申請人,申請內容,申請信息等)
* 3.提交流程(completeTask)
* 4.指定下一個處理任務的人(通過task = processEngine.getTaskService().createTaskQuery().processInstanceId(processInstance.getId()).uniqueResult();
* 獲取當前實例的最後一個任務,任務每一次提交後都會被移除到歷史任務中,所以要根據實例id才能找到最後一個任務)
* 用processEngine.getTaskService().assignTask(task.getId(),"2222");指定下一處理人
* 5.把申請信息插入業務表(非jbpm中的表)查詢此表獲取申請人申請信息
*
* 第三部 獲取任務列表(待審批)
* 1. List<Task> list = processEngine.getTaskService().findPersonalTasks(userId); 傳入用戶ID用此方法獲取任務列表
*
* 第四部 提交任務
* 1.傳入taskid或(通過task = processEngine.getTaskService().createTaskQuery().processInstanceId(processInstance.getId()).uniqueResult();)獲取
* taskid提交流程(completeTask)
* 2.傳入processInstanceID指定下一個處理任務的人(通過task = processEngine.getTaskService().createTaskQuery().processInstanceId(processInstance.getId()).uniqueResult();
* 獲取當前實例的最後一個任務,任務每一次提交後都會被移除到歷史任務中,所以要根據實例id才能找到最後一個任務)
* 用processEngine.getTaskService().assignTask(task.getId(),"2222");指定下一處理人
D. 關於工作流的資料庫設計
項目(Item)
項目ID(ItemId) 項目描述(ItemName) 流程ID (RoutID) 申請人ID (ApplyUserID) 狀態(State) 項目類型(ItemType)
1 鄭州出差借款 1 1 借款單
2 鄭州出差報銷 3 1 報銷單 這里的項目,是泛指,可以是公文,借款單,報銷單等等需要流轉的數據.
任務列表(TaskList)
任務ID(taskId) 項目ID (itemId) 步驟ID (actorId) 狀態(state) 版本(version) 1 1 1 檢出 100
2 2 3 檢出 1001
3 3 3 待檢出 1002項目申請後,任務列表插入一條記錄.用戶審批通過或者拒絕後,update當前步驟ID(上一步驟或者下一步驟).某個步驟可能有多個審批人,如果要審批,必須先檢出.version欄位是為了樂觀鎖控制,保證只能有一人檢出.
任務歷史記錄(TaskHistory)
ID(id) 項目ID (itemId) 步驟ID (actorId) 備注(memo) 操作人ID (operateUserId) 創建時間(createDate)1 1 1 成都出差 1
1 1 2 批准 2
1 1 3 批准 3
每個步驟的操作,都寫入任務歷史記錄
流程(Rout)
流程ID(routId) 流程描述(routName) 部門ID (deptID) 版本號(version) 狀態(State)
1 借款流程 1 1 發布
2 報銷流程 1 1 草稿
2 預算審批流程 1 1 停止 流程草稿狀態是可以修改刪除,發布狀態就不能修改和刪除,只能新增一個版本,或者新增一個流程,或者停止流程。
步驟(Actor)
步驟ID(actorID) 步驟序號(sortNo) 步驟描述(actorName) 流程ID (routId) 1 1 借款申請 1
2 2 部門經理審批 1
3 3 財務經理審批 1 步驟序號是步驟執行的順序,審批的時候,根據當前序號,查找下一步驟,然後將下一步驟update任務列表的步驟ID,審批拒絕,則查找上一步驟,然後update任務列表的步驟ID
步驟處理人(actorUser)
步驟ID(actorId) 處理人ID (operateUserId)
1 1
2 2
2 3 一個步驟,是有多個處理人。處理人先檢出任務列表,然後才能審批。
視圖:待我處理的工作
select t1.taskId,t1.itemId,t3.operateUserId from taskList t1 join actor t2 on t1.actorId=t2.actorId join actorUser t3 on t2.actorId=t3.actorId where t1.state='待檢出'
視圖:我申請的工作
select t1.itemId,t1.itemName,t1.state,t1.applyUserId,t2.actorId from item t1 join taskList t2 on t1.itemId=t2.itemId
申請時
"1--查找所選流程的第一個步驟
select actorId from actor
where routId =1
order by sortNo
limit 0,12--插入任務列表taskList
insert into tasklist(actorId,state,version,itemId)
values()3--插入任務歷史記錄
insert into taskhistory(itemId,actorid,memo,operateBy,createDate)
values()
4--修改項目Item的狀態為待審批
update item set state='wait_to_approve' where itemId=1"
審批通過
"1--update任務列表的步驟ID為下一步驟ID
update taskList set actorId=
(select actorId from actor
where routId = (select routId from actor where actorID=1)
and actorID>1
order by sortNo
limit 0,1
)
where taskId
2--插入任務歷史記錄
insert into taskhistory(itemId,actorid,memo,operateBy,createDate)
values()
3--修改項目Item的狀態為審批中
update item set state='approveing' where itemId=1"
審批拒絕
"1--update任務列表的步驟ID為第一步的ID
update taskList set actorId=
(select actorId from actor
where routId =(select routId from actor where actorID=1)
order by sortNo
limit 0,1)
where taskId=1
2--插入任務歷史記錄
insert into taskhistory(itemId,actorid,memo,operateBy,createDate)
values()
3--修改項目Item的狀態為審批拒絕
update item set state='jujue' where itemId=1"
E. 資料庫設計問題(業務審批流程)
1、用戶表
用戶ID
用戶角色(1:業務員,2:經理,3:總經理,4:總裁。。。)
用戶姓名
2、客戶表
客戶ID
客戶名稱
3、業務員客戶表
用戶ID(其實就是用戶表裡的用戶角色為業務員的用戶)
客戶ID
4、業務員移交客戶申請表
申請人用戶ID
申請移交的客戶ID
審批狀態(0:審批中,1:已審批。。。。)
移交後用戶ID
5、請假表
用戶ID
請假開始時間
請假結束時間
請假類別(1:事假、2:病假、3:婚假。。。。。)
審批狀態(0:審批中,1:已審批。。。。)
6、周報表
用戶ID
周報月份
審批狀態(0:臨時保存,1:已提交,2:經理已審批,3:總經理已審批。。。。)
其實具體控制,你要在程序里進行流程式控制制,並沒有你說的那種自動控制,不過這樣的表結構設計是可以滿足你後期不用再動資料庫,只用修改業務流程即可
F. 要做一個資料庫的畢設
資料庫表的設計是在需求分析的基礎上才進行的,先做分析,然後E-R,然後才是真正建表(當然這步可以通過ER工具完成)。
舉個最簡單的例子:
學生表(記錄學生信息)
教職工表(記錄輔導員、班主任等教職工信息)
審批規則表(確定誰先審批,下一個審批人是誰,每個審批人用編號表示,比如教職工編號,外鍵到教職工表)
請假申請表(編號、發起人、事由、起止時間等)
審批流程(請假申請編號、審批人、審批時間、審批結果、備注/理由等)!
G. 如何實現OA系統的自定議審批流程的資料庫設計
我舉一個例子:有的OA系統是要公司客戶自己有伺服器,然後裝到客戶的伺服器上。可是客戶嫌麻煩,所以我想將OA系統(PHP+Mysql)放在自己的伺服器上,讓公司客戶及其員工來注冊使用。那麼問題來了,原來在客戶自己的伺服器上資料庫也就十幾張表,但都放到我的伺服器上,每注冊一個公司就得增加十幾張表,那如果有一萬家公司注冊資料庫不得有幾十萬張表?跟樓主一樣的問題,有一些老牌廠商早就給出來完美答案了,比如華為、天翎都有過類似的問題,這些企業提出的解決方案就很不錯,就針對上面的問題,最簡單的辦法是給每張表加個實例ID,一個公司對應一個實例ID,然後在你的MVC架構中跟DB最近的這一層加個攔截器,每個SQL查詢都自動帶上實例ID,這樣不用對代碼做很大改動。後期再根據需要優化,哪些公司合用一張表,哪些單獨佔用一張表甚至一個資料庫,總之具體問題具體對待,需要在運營的過程中根據用戶量和業務情況來分析採取對策。