Short Code:[SYSTEM]
Workflow 除了員工進行審核,確認. 許多結點(Node)也會配合自動化設備自動執待.等待系統完成工作後.自動推動Workflow.為了避免人員誤觸系統確認結點. 在結點名字定義一組 Short Code [SYSTEM], 人員簽核畫面會自動過濾, 避免誤觸.
private String getWhereActivities() {
final String where =
"a.Processed='N' AND a.WFState='OS' "
+ " AND (EXISTS (select * from AD_WF_Node wfn where "
+ " a.AD_WF_Node_ID = wfn.AD_WF_Node_ID "
+ " and not ( substring(wfn.name,1,8) = '[SYSTEM]' and wfn.action = 'Z' ) ) )"
+ " AND ("
// Owner of Activity
+ " a.AD_User_ID=?" // #1
// Invoker (if no invoker = all)
+ " OR EXISTS (SELECT * FROM AD_WF_Responsible r WHERE a.AD_WF_Responsible_ID=r.AD_WF_Responsible_ID"
+ " AND r.ResponsibleType='H' AND COALESCE(r.AD_User_ID,0)=0 AND COALESCE(r.AD_Role_ID,0)=0 AND (a.AD_User_ID=? OR a.AD_User_ID IS NULL))" // #2
// Responsible User
+ " OR EXISTS (SELECT * FROM AD_WF_Responsible r WHERE a.AD_WF_Responsible_ID=r.AD_WF_Responsible_ID"
+ " AND r.ResponsibleType='H' AND r.AD_User_ID=?)" // #3
// Responsible Role
+ " OR EXISTS (SELECT * FROM AD_WF_Responsible r INNER JOIN AD_User_Roles ur ON (r.AD_Role_ID=ur.AD_Role_ID)"
+ " WHERE a.AD_WF_Responsible_ID=r.AD_WF_Responsible_ID AND r.ResponsibleType='R' AND ur.AD_User_ID=? AND ur.isActive = 'Y')" // #4
///* Manual Responsible */
+ " OR EXISTS (SELECT * FROM AD_WF_ActivityApprover r "
+ " WHERE a.AD_WF_Activity_ID=r.AD_WF_Activity_ID AND r.AD_User_ID=? AND r.isActive = 'Y')"
+ ") AND a.AD_Client_ID=?"; // #5
return where;
}English Version
Short Code:[SYSTEM]
In a Workflow, besides manual review and confirmation by staff, many nodes also work with automated equipment to execute tasks automatically. After the system completes its work, it automatically advances the Workflow. To prevent personnel from accidentally triggering system confirmation nodes, a Short Code [SYSTEM] is defined in the node name. The approval screen automatically filters these out to avoid accidental triggers.
private String getWhereActivities() {
final String where =
"a.Processed='N' AND a.WFState='OS' "
+ " AND (EXISTS (select * from AD_WF_Node wfn where "
+ " a.AD_WF_Node_ID = wfn.AD_WF_Node_ID "
+ " and not ( substring(wfn.name,1,8) = '[SYSTEM]' and wfn.action = 'Z' ) ) )"
+ " AND ("
// Owner of Activity
+ " a.AD_User_ID=?" // #1
// Invoker (if no invoker = all)
+ " OR EXISTS (SELECT * FROM AD_WF_Responsible r WHERE a.AD_WF_Responsible_ID=r.AD_WF_Responsible_ID"
+ " AND r.ResponsibleType='H' AND COALESCE(r.AD_User_ID,0)=0 AND COALESCE(r.AD_Role_ID,0)=0 AND (a.AD_User_ID=? OR a.AD_User_ID IS NULL))" // #2
// Responsible User
+ " OR EXISTS (SELECT * FROM AD_WF_Responsible r WHERE a.AD_WF_Responsible_ID=r.AD_WF_Responsible_ID"
+ " AND r.ResponsibleType='H' AND r.AD_User_ID=?)" // #3
// Responsible Role
+ " OR EXISTS (SELECT * FROM AD_WF_Responsible r INNER JOIN AD_User_Roles ur ON (r.AD_Role_ID=ur.AD_Role_ID)"
+ " WHERE a.AD_WF_Responsible_ID=r.AD_WF_Responsible_ID AND r.ResponsibleType='R' AND ur.AD_User_ID=? AND ur.isActive = 'Y')" // #4
///* Manual Responsible */
+ " OR EXISTS (SELECT * FROM AD_WF_ActivityApprover r "
+ " WHERE a.AD_WF_Activity_ID=r.AD_WF_Activity_ID AND r.AD_User_ID=? AND r.isActive = 'Y')"
+ ") AND a.AD_Client_ID=?"; // #5
return where;
}日本語版
Short Code:[SYSTEM]
ワークフローでは、担当者による審査・確認の他に、多くのノード(Node)が自動化設備と連携して自動的にタスクを実行します。システムが作業を完了した後、ワークフローは自動的に進行します。担当者がシステム確認ノードを誤って操作するのを防ぐため、ノード名にショートコード [SYSTEM] を定義しています。承認画面では自動的にフィルタリングされ、誤操作を防止します。
private String getWhereActivities() {
final String where =
"a.Processed='N' AND a.WFState='OS' "
+ " AND (EXISTS (select * from AD_WF_Node wfn where "
+ " a.AD_WF_Node_ID = wfn.AD_WF_Node_ID "
+ " and not ( substring(wfn.name,1,8) = '[SYSTEM]' and wfn.action = 'Z' ) ) )"
+ " AND ("
// アクティビティの所有者
+ " a.AD_User_ID=?" // #1
// 呼び出し元(呼び出し元がない場合 = 全員)
+ " OR EXISTS (SELECT * FROM AD_WF_Responsible r WHERE a.AD_WF_Responsible_ID=r.AD_WF_Responsible_ID"
+ " AND r.ResponsibleType='H' AND COALESCE(r.AD_User_ID,0)=0 AND COALESCE(r.AD_Role_ID,0)=0 AND (a.AD_User_ID=? OR a.AD_User_ID IS NULL))" // #2
// 責任ユーザー
+ " OR EXISTS (SELECT * FROM AD_WF_Responsible r WHERE a.AD_WF_Responsible_ID=r.AD_WF_Responsible_ID"
+ " AND r.ResponsibleType='H' AND r.AD_User_ID=?)" // #3
// 責任ロール
+ " OR EXISTS (SELECT * FROM AD_WF_Responsible r INNER JOIN AD_User_Roles ur ON (r.AD_Role_ID=ur.AD_Role_ID)"
+ " WHERE a.AD_WF_Responsible_ID=r.AD_WF_Responsible_ID AND r.ResponsibleType='R' AND ur.AD_User_ID=? AND ur.isActive = 'Y')" // #4
///* 手動責任者 */
+ " OR EXISTS (SELECT * FROM AD_WF_ActivityApprover r "
+ " WHERE a.AD_WF_Activity_ID=r.AD_WF_Activity_ID AND r.AD_User_ID=? AND r.isActive = 'Y')"
+ ") AND a.AD_Client_ID=?"; // #5
return where;
}