Modified stored procedures vesp_SessionBegin and vesp_SessionCanCheckOutItem to manage when an adminstrator can export or import a docversion from within PROMS.
This commit is contained in:
parent
c53e228de1
commit
8a5a8cc8b3
@ -7672,29 +7672,46 @@ CREATE PROCEDURE [dbo].[vesp_SessionBegin]
|
|||||||
WITH EXECUTE AS OWNER
|
WITH EXECUTE AS OWNER
|
||||||
AS
|
AS
|
||||||
BEGIN TRY -- Try Block
|
BEGIN TRY -- Try Block
|
||||||
BEGIN TRANSACTION
|
DECLARE @oCount int
|
||||||
--delete old closed sessions
|
SELECT @oCount = count(*) FROM Owners WHERE OwnerType = 3
|
||||||
DELETE FROM Sessions WHERE UserID = @UserID and DTSEnd is not null
|
IF @oCount > 0 BEGIN
|
||||||
--delete old owners from inactive sessions
|
SELECT
|
||||||
DELETE FROM Owners WHERE SessionID in (SELECT SessionID FROM Sessions WHERE UserID = @UserID and DTSEnd is null and DTSActivity < DATEADD(minute, -5, getdate()))
|
[SessionID],
|
||||||
DELETE FROM Owners WHERE SessionID in (SELECT SessionID FROM Sessions WHERE DTSEnd is null and DTSActivity < DATEADD(minute, -15, getdate()))
|
[UserID],
|
||||||
--delete inactive sessions where last activity is before 15 minutes ago
|
[DTSDtart],
|
||||||
DELETE FROM Sessions WHERE UserID = @UserID and DTSEnd is null and DTSActivity < DATEADD(minute, -5, getdate())
|
[DTSEnd],
|
||||||
DELETE FROM Sessions WHERE DTSEnd is null and DTSActivity < DATEADD(minute, -15, getdate())
|
[DTSActivity],
|
||||||
INSERT INTO [Sessions]([UserID],[MachineName],[ProcessID])
|
[LastChanged],
|
||||||
VALUES (@UserID, @MachineName, @ProcessID)
|
[MachineName],
|
||||||
SELECT
|
[ProcessID]
|
||||||
[SessionID],
|
FROM [Sessions]
|
||||||
[UserID],
|
WHERE [SessionID]=0
|
||||||
[DTSDtart],
|
END
|
||||||
[DTSEnd],
|
ELSE BEGIN
|
||||||
[DTSActivity],
|
BEGIN TRANSACTION
|
||||||
[LastChanged],
|
--delete old closed sessions
|
||||||
[MachineName],
|
DELETE FROM Sessions WHERE UserID = @UserID and DTSEnd is not null
|
||||||
[ProcessID]
|
--delete old owners from inactive sessions
|
||||||
FROM [Sessions]
|
DELETE FROM Owners WHERE SessionID in (SELECT SessionID FROM Sessions WHERE UserID = @UserID and DTSEnd is null and DTSActivity < DATEADD(minute, -5, getdate()))
|
||||||
WHERE [SessionID]=SCOPE_IDENTITY()
|
DELETE FROM Owners WHERE SessionID in (SELECT SessionID FROM Sessions WHERE DTSEnd is null and DTSActivity < DATEADD(minute, -15, getdate()))
|
||||||
IF( @@TRANCOUNT > 0 ) COMMIT
|
--delete inactive sessions where last activity is before 15 minutes ago
|
||||||
|
DELETE FROM Sessions WHERE UserID = @UserID and DTSEnd is null and DTSActivity < DATEADD(minute, -5, getdate())
|
||||||
|
DELETE FROM Sessions WHERE DTSEnd is null and DTSActivity < DATEADD(minute, -15, getdate())
|
||||||
|
INSERT INTO [Sessions]([UserID],[MachineName],[ProcessID])
|
||||||
|
VALUES (@UserID, @MachineName, @ProcessID)
|
||||||
|
SELECT
|
||||||
|
[SessionID],
|
||||||
|
[UserID],
|
||||||
|
[DTSDtart],
|
||||||
|
[DTSEnd],
|
||||||
|
[DTSActivity],
|
||||||
|
[LastChanged],
|
||||||
|
[MachineName],
|
||||||
|
[ProcessID]
|
||||||
|
FROM [Sessions]
|
||||||
|
WHERE [SessionID]=SCOPE_IDENTITY()
|
||||||
|
IF( @@TRANCOUNT > 0 ) COMMIT
|
||||||
|
END
|
||||||
END TRY
|
END TRY
|
||||||
BEGIN CATCH -- Catch Block
|
BEGIN CATCH -- Catch Block
|
||||||
IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level
|
IF( @@TRANCOUNT = 1 ) ROLLBACK -- Only rollback if top level
|
||||||
@ -8043,57 +8060,74 @@ BEGIN
|
|||||||
(
|
(
|
||||||
SessionID int
|
SessionID int
|
||||||
)
|
)
|
||||||
--look to see if object is already checked out in owner table as passed object type
|
--look to see if anyone else has a session. if they do, then cannot check out
|
||||||
INSERT INTO @CheckOuts SELECT DISTINCT SessionID FROM Owners WHERE OwnerItemID = @ObjectID AND OwnerType = @ObjectType
|
DECLARE @sCount int
|
||||||
--look to see if object is part of a checked out docversion as passed object type
|
SELECT @sCount = count(*) FROM Sessions
|
||||||
DECLARE @VersionIDList varchar(max)
|
IF @ObjectType = 3 BEGIN
|
||||||
SELECT @VersionIDList = COALESCE(@VersionIDList + ',','') + CAST(OwnerItemID as varchar(4)) FROM Owners WHERE OwnerType = 2
|
SELECT
|
||||||
IF ISNULL(@VersionIDList,'') != '' AND @ObjectType = 0 BEGIN --procedure
|
[SessionID],
|
||||||
INSERT INTO @CheckOuts
|
[UserID],
|
||||||
SELECT ss.SessionID FROM dbo.vefn_GetVersionItems(@VersionIDList) vi
|
[DTSDtart],
|
||||||
INNER JOIN Contents cc ON vi.ContentID = cc.ContentID
|
[DTSEnd],
|
||||||
INNER JOIN Owners oo ON vi.VersionID = oo.OwnerItemID
|
[DTSActivity],
|
||||||
INNER JOIN Sessions ss ON oo.SessionID = ss.SessionID
|
[LastChanged],
|
||||||
WHERE cc.Type = 0 AND vi.ItemID = @ObjectID
|
[MachineName],
|
||||||
END
|
[ProcessID]
|
||||||
IF ISNULL(@VersionIDList,'') != '' AND @ObjectType = 1 BEGIN --document
|
FROM [Sessions]
|
||||||
INSERT INTO @CheckOuts
|
WHERE DTSEnd IS NULL
|
||||||
SELECT ss.SessionID FROM dbo.vefn_GetVersionItems(@VersionIDList) vi
|
END ELSE BEGIN
|
||||||
INNER JOIN Contents cc ON vi.ContentID = cc.ContentID
|
--look to see if object is already checked out in owner table as passed object type
|
||||||
INNER JOIN Entries ee ON vi.ContentID = ee.ContentID
|
INSERT INTO @CheckOuts SELECT DISTINCT SessionID FROM Owners WHERE OwnerItemID = @ObjectID AND OwnerType = @ObjectType
|
||||||
INNER JOIN Owners oo ON vi.VersionID = oo.OwneritemID
|
--look to see if object is part of a checked out docversion as passed object type
|
||||||
INNER JOIN Sessions ss ON oo.SessionID = ss.SessionID
|
DECLARE @VersionIDList varchar(max)
|
||||||
WHERE ee.DocID = @ObjectID
|
SELECT @VersionIDList = COALESCE(@VersionIDList + ',','') + CAST(OwnerItemID as varchar(4)) FROM Owners WHERE OwnerType = 2
|
||||||
END
|
IF ISNULL(@VersionIDList,'') != '' AND @ObjectType = 0 BEGIN --procedure
|
||||||
--look to see if object type is docversion that no part of docversion passed is checked out
|
INSERT INTO @CheckOuts
|
||||||
IF @ObjectType = 2 BEGIN
|
SELECT ss.SessionID FROM dbo.vefn_GetVersionItems(@VersionIDList) vi
|
||||||
--see what procedures maybe checked out
|
INNER JOIN Contents cc ON vi.ContentID = cc.ContentID
|
||||||
INSERT INTO @CheckOuts
|
INNER JOIN Owners oo ON vi.VersionID = oo.OwnerItemID
|
||||||
SELECT ss.SessionID FROM dbo.vefn_GetVersiONItems(@ObjectID) vi
|
INNER JOIN Sessions ss ON oo.SessionID = ss.SessionID
|
||||||
INNER JOIN Contents cc ON vi.ContentID = cc.ContentID
|
WHERE cc.Type = 0 AND vi.ItemID = @ObjectID
|
||||||
INNER JOIN Owners oo ON vi.ItemID = oo.OwnerItemID
|
END
|
||||||
INNER JOIN Sessions ss ON oo.SessionID = ss.SessionID
|
IF ISNULL(@VersionIDList,'') != '' AND @ObjectType = 1 BEGIN --document
|
||||||
WHERE cc.Type = 0
|
INSERT INTO @CheckOuts
|
||||||
--see what documents maybe checked out
|
SELECT ss.SessionID FROM dbo.vefn_GetVersionItems(@VersionIDList) vi
|
||||||
INSERT INTO @CheckOuts
|
INNER JOIN Contents cc ON vi.ContentID = cc.ContentID
|
||||||
SELECT ss.SessionID FROM dbo.vefn_GetVersiONItems(@ObjectID) vi
|
INNER JOIN Entries ee ON vi.ContentID = ee.ContentID
|
||||||
INNER JOIN Contents cc ON vi.ContentID = cc.ContentID
|
INNER JOIN Owners oo ON vi.VersionID = oo.OwneritemID
|
||||||
INNER JOIN Entries ee ON vi.ContentID = ee.ContentID
|
INNER JOIN Sessions ss ON oo.SessionID = ss.SessionID
|
||||||
INNER JOIN Owners oo ON ee.DocID = oo.OwnerItemID
|
WHERE ee.DocID = @ObjectID
|
||||||
INNER JOIN Sessions ss ON oo.SessionID = ss.SessionID
|
END
|
||||||
END
|
--look to see if object type is docversion that no part of docversion passed is checked out
|
||||||
|
IF @ObjectType = 2 BEGIN
|
||||||
|
--see what procedures maybe checked out
|
||||||
|
INSERT INTO @CheckOuts
|
||||||
|
SELECT ss.SessionID FROM dbo.vefn_GetVersiONItems(@ObjectID) vi
|
||||||
|
INNER JOIN Contents cc ON vi.ContentID = cc.ContentID
|
||||||
|
INNER JOIN Owners oo ON vi.ItemID = oo.OwnerItemID
|
||||||
|
INNER JOIN Sessions ss ON oo.SessionID = ss.SessionID
|
||||||
|
WHERE cc.Type = 0
|
||||||
|
--see what documents maybe checked out
|
||||||
|
INSERT INTO @CheckOuts
|
||||||
|
SELECT ss.SessionID FROM dbo.vefn_GetVersiONItems(@ObjectID) vi
|
||||||
|
INNER JOIN Contents cc ON vi.ContentID = cc.ContentID
|
||||||
|
INNER JOIN Entries ee ON vi.ContentID = ee.ContentID
|
||||||
|
INNER JOIN Owners oo ON ee.DocID = oo.OwnerItemID
|
||||||
|
INNER JOIN Sessions ss ON oo.SessionID = ss.SessionID
|
||||||
|
END
|
||||||
|
|
||||||
SELECT
|
SELECT
|
||||||
[SessionID],
|
[SessionID],
|
||||||
[UserID],
|
[UserID],
|
||||||
[DTSDtart],
|
[DTSDtart],
|
||||||
[DTSEnd],
|
[DTSEnd],
|
||||||
[DTSActivity],
|
[DTSActivity],
|
||||||
[LastChanged],
|
[LastChanged],
|
||||||
[MachineName],
|
[MachineName],
|
||||||
[ProcessID]
|
[ProcessID]
|
||||||
FROM [Sessions]
|
FROM [Sessions]
|
||||||
WHERE [SessionID] IN (SELECT SessionID FROM @CheckOuts)
|
WHERE [SessionID] IN (SELECT SessionID FROM @CheckOuts)
|
||||||
|
END
|
||||||
END
|
END
|
||||||
GO
|
GO
|
||||||
-- Display the status of Proc creation
|
-- Display the status of Proc creation
|
||||||
|
Loading…
x
Reference in New Issue
Block a user