存储过程
WikeFlow2.0演示地址:http://workflow2.wikesoft.com
1、不同的系统有不同的权限、用户表,表字段也不一样。
2、为了解决这种情况,我们提供定义存储过程的方式来定义流程角色。
3、通过你自己编写存储过程来关联你的用户、权限表,然后再通过存储过程返回到流程执行中。
逻辑图如下:
步骤
第一步:在流程角色中定义存储过程。
第二步:
在数据库编写对应的存储过程。
第三步:
在流程设计中连接线选择相关的流程角色。
存储过程定义说明
不同数据库存储过程定义方式不一样,但是总体要求如下:
参数说明
参数1(instanceId):流程实例Id,有些业务场景可能要取流程中的用户数据;
参数2(userId):当前用户ID;
参数3(query):查询条件,用于对存储过程的结果进行二次查询,选人页面中姓名输入框填写的字符串 ;
如果传递的是空值或null值 ,流程引擎会将该值转化为 '%%'
返回结果集
返回结果集必须要是以UserId和UserName的两列结果集(不区分大小写,必须都是string 类型),如果你的用户表的ID是Int类型的自增长或其它类型,则需要转换成String类型。
示例:
查询人办资源的用户列表
SQL Server:
CREATE PROC Proc_Hrm @instanceId VARCHAR(50),--实例Id @userId VARCHAR(50),--当然用户ID @query VARCHAR(50)--查询条件 AS BEGIN SELECT Id AS UserId,TrueName AS UserName FROM Sys_User WHERE Id IN (SELECT UserId FROM Sys_UserRole WHERE RoleId = '4997DC7A-BE5F-4256-AEF6-6CB321C73243') AND UserName LIKE @query END
MySQL:
DROP PROCEDURE IF EXISTS Proc_Hrm; CREATE PROCEDURE Proc_Hrm(in p_instanceId VARCHAR(50),in p_userId VARCHAR(50),in p_query VARCHAR(50)) BEGIN SELECT Id AS UserId,TrueName AS UserName FROM Sys_User WHERE Id IN (SELECT UserId FROM Sys_UserRole WHERE RoleId = '4997DC7A-BE5F-4256-AEF6-6CB321C73243') AND TrueName LIKE p_query; END
Oralce:
CREATE OR REPLACE PROCEDURE Proc_Hrm ( P_INSTANCEID IN VARCHAR2 , P_USERID IN VARCHAR2 , P_QUERY IN VARCHAR2 ,V_CUR out sys_refcursor ) AS BEGIN open V_CUR for SELECT Id AS UserId,TrueName AS UserName FROM Sys_User WHERE Id IN (SELECT UserId FROM Sys_UserRole WHERE RoleId = '4997DC7A-BE5F-4256-AEF6-6CB321C73243') AND TrueName LIKE p_query; END Proc_Hrm;
版权所有:本文档的任何部分,包括文字、图片、图形等均归属于成都惟科软件有限公司(以下简称“惟科软件”)。未经书面许可,任何单位或个人不得以任何方式摘录、复制、翻译、修改本手册的全部或部分。除非另有约定,惟科软件不对本手册提供任何明示或默示的声明或保证。
责任声明:在法律允许的最大范围内,本文档是“按照现状”提供,可能存在瑕疵或错误。惟科软件不对本文档提供任何形式的明示或默示保证,包括但不限于适销性、质量满意度、适合特定目的;亦不对使用或是分发本文档导致的任何特殊、附带、偶然或间接的损害进行赔偿,包括但不限于商业利润损失、系统故障、数据或文档丢失产生的损失。