T.R | Title | User | Personal Name | Date | Lines |
---|
842.1 | no one said it was easy... | TOOK::DENSMORE | Dirty deeds done dirt cheap | Wed Mar 27 1991 15:42 | 5 |
| Just to make it more interesting, consider the case where the filter
is an OR of an attribute in the object and an attribute maintained by
DECmcc (orphaned or augmented).
Mike
|
842.2 | why in the PM? | TOOK::CALLANDER | | Wed Mar 27 1991 16:34 | 11 |
| I know in the past we have had a tendency of saying "well the PM has a full
view of, and complete access to, the system; let's put it there."
Well here is a PM person telling you to find an FM!
Remember that FMs can call other FMs as well as AMs. The only thing they can't
do is call a PM; so since we can have multiple PMs...it would be nice if the
functions could be centralized in an FM (which could then be capable of
handling augment/orphaned attributes and other such stuff).
jill
|
842.3 | I'll do anything for caffeine... | ULTMAT::BELANGER | A ROSE by anyother name, would not be manageable | Thu Mar 28 1991 11:27 | 46 |
|
It would be nice if as a scope/filter combination was passed to the
managed object that the augmented and orphaned information could also
be passed. The problem with this is that filters are executed on
scoped objects and unnecessary information would have to travel.
Another option, might be to perform whatever scoping at the various
levels. Note though that the PM may know about augmented attributes
but an FM is responsible for them. The FM should deal with the
scoping/filtering of augemented attributes (just like the AM deals with
this processing for orphaned attributes). If at each stage the
scope/filters were dealt with for attributes which were known (defined
by) the level and all other evaluations of scope/filter for unknown
attributes were considered to evaluate to TRUE, then the set of managed
objects could be reduced as we move down the mcc_call hierarchy. As an
example:
we have an FM which defins an augmented attribute and an AM which
defins an orphaned attribute and a managed object with any number
attributes
If a request for a PM is passed to the FM with a scope and filter
which identifies the augmented attribute as well as the orphaned
attribute and also one for the managed object. The FM assumes that
the scope/filter for the ophaned and managed object attributes
evaluate to true and only deals with the augmented attribute. It
uses the scope/filter for the augmented attribute to obtain a set
of managed objects which evaluate to true for the augement
attribute. The FM strips off the parts of the scope which deal
with the augemented attribute an make an mcc_call to the AM with
the set of managed objects (or a separate call for each managed
object). The AM makes the same assumption about the scope/filter
for the managed object attribute as the FM did for the orphaned and
managed object attributes (ie: they evaluate to TRUE). The AM uses
the scope/filter for the orphaned attribute to select a set of
managed objects from the set the FM supplied to arrive at a set of
managed object which have been scoped/filtered for both the
augmented and orphaned attributes. The AM strips off the parts of
the scope/filter it received an sends the request(s) to the set of
managed objects it just scoped/filtered. The resulting replies
from the managed objects "should" come from the set of managed
objects which fulfil the original scope/filter supplied to the FM.
Now, how this fits into the WITH and WILDCARD, I have no idea.
~Jon.
|
842.4 | Reply to the intuitive solution | TOOK::MATTHEWS | | Thu Mar 28 1991 13:11 | 38 |
| This is reply to .3
Assume that the base object has a child class of foo and 1000 instances
of the foo class. Suppose there is an augmented attribute for foo, that
means there are 1000 values associated with attribute assertion using
that attribute.
First, OSI provides no mechanism for passing in augmented attribute
values. Second, even if it did, who would want to pass in 1000 values
for potentially complex structure attributes and along with each value
you need to identify which instance the value is for.
If you assume that what is being passed down through the DECmcc levels
apply only to the base object, your intuitive algorithm of peeling the
layers as you go works quite well. However, if you assume OSI scoping
what you are potentially passing down is a pointer to somewhere in the
entity containment structure and asking for the operation to apply to
some subset of the child entities of that base object. What you peeled
off at the upper layers was the augmentation of the base object and
not the augmentation of its children (recursively defined). Yet, OSI
has it specified that scoping and filtering is recursively defined
to apply (potentially) to the base object and all its descendents.
This makes the peeling of the onion, a much more complex operation.
That is the object of the challenge. Define an algorithm that can
be applied at the appropriate levels of MCC that conceptually
peels the layers for all the descendents for all the augmented
values that apply at that level.
I think as you appreciate the problem more, you see that it is far
more complex than the intuitive view. I said that in the original
challenge that solving it for the base value was an already
understood solution but that we need to extend the solution to
the descendents also IF we aspire to be fully OSI conformant.
It also points out that blind acceptance of OSI as it is defined
prevents us from doing useful things like augmentation of objects.
wally
|
842.5 | OSI defines generic filters but also some specific restrictions sometimes... | RIVAGE::LAVILLAT | | Fri Mar 29 1991 04:05 | 28 |
| Re .-1
> It also points out that blind acceptance of OSI as it is defined
> prevents us from doing useful things like augmentation of objects.
You maybe rigth there. I would rather express that by it prevents us from using
useful things like augmented or orphaned attributes within filters.
I think one should not forget that even if OSI defines very general filters, it
also sometimes defines (like for Event/Alarms filtering) what specific
attributes can be used for filtering (and it is sometimes very restricitive).
Another thougth : can we assume that both PMs, FMs and AMs are able to recognize
wether a specific attribute is :
- not defined for the current entity
- defined but augmented
- defined but orphaned
- 'normal'
In this case each of them could take the appropriate action for each assertion :
a possible action could be ignoring the assertion if it is not able to handle
it.
I know this is a *very* partial idea, just to add my two �
Regards
Pierre
|
842.6 | clarification on capabilities | TOOK::CALLANDER | | Fri Mar 29 1991 09:45 | 18 |
|
Maybe we should clear something up here. There is no way, from the data in
the dictionary today, for any module to determine which attributes are
orphaned or augmented. The only means to a PM or FM to figure it out
if for the module to determine which
partition the attribute belongs in (this is in the dictionary) and then
to make a request for the attribute.
Even then it isn't so simple. What will happen is:
if they use a call_function and the partition is supported by an
AM then the Control_FM will pass it through; if they use the call_access and
it isn't supported by the AM then they will get a dispatch entry not found
error. In either case it isn't real straight forward. The only one who knows
if it is augmented or orphaned is the AM itself responsible for supporting
the entity class.
The thing is that a PM or FM should have to care. They simply make the
call_function and get the value, regardless of source.
|
842.7 | | TOOK::DITMARS | Pete | Fri Mar 29 1991 10:08 | 5 |
| clarification of .6's clarification on capabilities:
>The thing is that a PM or FM should have to care. They simply make the
^
not
|
842.8 | rewrite MCC in CLOS or SML | RANGER::PRAETORIUS | face to face to face with duality | Fri Mar 29 1991 14:39 | 36 |
| While I won't claim to be a computer science type, here's (what some might
consider) a computer science type of answer:
if A calls B
and predicate p must be evaluated in the context of A
but B needs the value of p (for an object derived in B's context)
then why not encapsulate the evaluation of p in A in a lexical closure,
pass that closure to B
and evaluate it there
(where A is the PM or FM
B is the AM
and p is the test of the augmented or orphan attribute)
Answers to why not might be:
no good equivalent to a lexical closure can be cobbled up inside MCC
MCC's framework provides no good way to pass such a thing
it might be inefficient
it might not really solve anything
(but I'm no MCC expert).
Or, in English:
would it work to have the AM call back the FM or PM and have it
test the attribute?
This could be nonsense, but what do you expect from somebody clearly identifying
themself as not a computer science type nonetheless providing a computer science
type answer?
randomly,
RP
|