Supporting Advance Read and Write at the Attribute Level

Extending Item’s Advance Read and Write Mechanism to Attributes

Current implementation

An Item Definition can have separate advance levels for reading and writing though the GUI currently assumes they are set to the same value. In addition an Item can choose to override it’s definition’s information allowing the same item in different attributes to have different GUI access.

A request has come in to extend this functionality to attributes and their definitions (similar to what was done with category assignment). Below is a propose approach.

How could this work

Lets assume we have the following:

Here we have 3 attribute Definitions (Def1 - Def3) each with 2 Item Definitions (6 total ID1-ID6).
Def2 is derived from Def1 and Def3 is derived from Def2. Some of these definitions have advance access information (advance read level, advance write level).

Lets also assume that the read access < write access (else it makes no sense)

Lets assume attribute A3 is of type Def3 - what are the advance levels assigned to A3 and its items?

Possible assignment based on above example.

Information ARL AWL
A3 D3 D3
I1 D1 D1
I2 ID2 ID2
I3 D1 D1
I4 ID4 ID4
I5 D3 D3
I6 ID6 iD6

Note ARL = Advance Read Level and AWL=Advance Write Level
Lets give the variables some values

Information ARL AWL
A3 3 6
I1 1 2
I2 2 4
I3 1 2
I4 4 8
I5 3 6
I6 6 12

Interpretation - using a file system analogy

  1. In order to even see any of the information in A3 you need advance level set to 3 (in this case you would see items (1, 2, 3, 5))
  2. In order to modify any items in A3 you need advance level set to 6 (in this case you would be able to modify items (1, 2, 3, 5 as well)

Note that this behavior holds if the user explicitly overrides the inherited values.

Information ARL AWL
A3 2 3
I1 1 2
I2 1 4
I3 1 2
I4 4 8
I5 3 6
I6 6 12

In this case you need levels 2 to read any of the attribute’s info (seeing items 1, 2, 3) and 3 to be able to modify items (1, 3)

The rule seems to be that an item’s advance level for reading = max(it’s reading level, reading level of its parent). The same relationship holds for the advance level for writing.

There were some discussion on whether you needed a do not inherit mechanism similar to category inheritance but based on the above I don’t think that makes sense.

Write access and AttributeViews

  1. If the current advance level is less than an attribute’s write level then you should not be able to delete the attribute from the view
  2. If the advance level is less than an attribute’s read level then that attribute would not be in the attribute list

Copying Attributes and Items

The default behavior should probably not copy the explicit advance read/write assigned directly to attributes and/or items

I think there is a typo or mismatch between the table and the statement. If the AWL is 3, then

  • you need level three (not 4) to modify I1 and I3.
  • at level 4, you could modify I1, I2, and I3.

Thanks John - Fixed.