|
If the user USER1 is logged into Agile e6, he or she is permitted to make entries in the document master and the document type masks as a result of his or her assigned job function. However, this privilege has only been granted for documents who are either project-independent (i.e. which are not assigned to a specific project) or who are allocated to the FastViper project because the job function of the user is restricted to this project. As a prerequisite for this example, you must have performed the steps described in the previous examples. |
|
|
In the field of the existing tasks EDB-DOC-UPD,EDB-DOC-3DM-UPD ... EDB-DOC-TXT-UPD enter CUS_TASK/DocumentUpdate. |
|
| These tasks should already have been assigned to the appropriate document masks with the Tasks checked in Masks list! | |
| Prepare the LogiView Procedure DocumentUpdate in the logic model CUS_TASK. | |
|
Variables of the procedure EP_ALL_OKAY L
EP_COUNT I Counter
EP_COUNT_PRO I Counter for projects
EP_DOC_CID I "T_DOC_DAT.C_ID", actual C_ID of current document
record
EP_FOUND I Number of found records
EP_INDEX I
EP_PRO_ID_ARR S 100 "T_PRO_DAT.PROJ_ID" Array with project ID's
EP_STRING S arbitrary string
EP_TSK_PRO_ARR S 100 Array with projects for all tasks
|
|
LogiView Procedure CUS_TASK/DocumentUpdate
10 C -- The default is to assume no privilege
20 EP_ALL_OKAY = FALSE
30 C -- Get the C_ID of the current document
40 EP_DOC_CID = sel_value("T_DOC_DAT.C_ID",actual)
50 C -- Get all projects which are related to the document
60 select_agg("EDB-DOCUMENT EDB-PROJECT STR")
70 var(EP_PRO_ID_ARR[1])
80 where_ent("T_DOC_DAT.C_ID" = EP_DOC_CID)
90 EP_FOUND = execute(0)
100 if (EP_FOUND > 0)
110 C -- The document has been assigned to one ore more projects.
120 EP_STRING = ""
130 EP_COUNT = split(EP_ROL_PRO,EP_TSK_PRO_ARR[1])
140 if (EP_COUNT > 0)
150 C -- OK, the task is restricted to specific projects
160 C -- Is the user permitted to update the document?
170 C -- Check if the found projects match
180 C -- the projects defined for a job position.
190 while (EP_FOUND > 0)
200 if (EP_FOUND == 1)
210 EP_STRING = strcat(EP_STRING,EP_PRO_ID_ARR[EP_FOUND])
220 else
230 EP_STRING = strcat(EP_STRING,EP_PRO_ID_ARR[EP_FOUND],",")
240 endif
250 EP_INDEX = EP_COUNT
260 while (EP_INDEX > 0)
270 if (EP_TSK_PRO_ARR[EP_INDEX] == EP_PRO_ID_ARR[EP_FOUND])
280 EP_ALL_OKAY = TRUE
290 endif
300 EP_INDEX = EP_INDEX-1
310 done
320 EP_FOUND = EP_FOUND-1
330 done
340 else
350 C -- The privileges of the user are not restricted to specific projects
360 EP_ALL_OKAY = TRUE
370 endif
380 else
390 C -- The document is not assigned to a specific project
400 C -- so let's assume it is a general document.
410 EP_ALL_OKAY = TRUE
420 endif
430 if (EP_ALL_OKAY == FALSE)
440 C -- Return with 'exit' to generate an error
450 put(strprint("This document is assigned to project(s) %s",EP_STRING))
460 put(strprint("You can only update documents from project(s)
%s",EP_ROL_PRO))
470 exit()
480 endif
|