存储过程

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;


版权所有:本文档的任何部分,包括文字、图片、图形等均归属于成都惟科软件有限公司(以下简称“惟科软件”)。未经书面许可,任何单位或个人不得以任何方式摘录、复制、翻译、修改本手册的全部或部分。除非另有约定,惟科软件不对本手册提供任何明示或默示的声明或保证。

责任声明:在法律允许的最大范围内,本文档是“按照现状”提供,可能存在瑕疵或错误。惟科软件不对本文档提供任何形式的明示或默示保证,包括但不限于适销性、质量满意度、适合特定目的;亦不对使用或是分发本文档导致的任何特殊、附带、偶然或间接的损害进行赔偿,包括但不限于商业利润损失、系统故障、数据或文档丢失产生的损失。