存储过程

WikeFlow2.0演示地址:http://workflow2.wikesoft.com


1、不同的系统有不同的权限、用户表,表字段也不一样。

2、为了解决这种情况,我们提供定义存储过程的方式来定义流程角色。

3、通过你自己编写存储过程来关联你的用户、权限表,然后再通过存储过程返回到流程执行中。

逻辑图如下:

  步骤

第一步:

在流程角色中定义存储过程。


第二步:

在数据库编写对应的存储过程。


第三步:

在流程设计中连接线选择相关的流程角色。





  存储过程定义说明

不同数据库存储过程定义方式不一样,但是总体要求如下:

参数说明

参数1:流程实例Id

参数2:当前用户ID

参数3:查询条件

返回结果集

返回结果集必须要是以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;