Method and apparatus for supporting cooperative activity6298346Abstract Provided are a method and apparatus for supporting a cooperative activity in which an activity is performed by cooperation among a plurality of participants, as in a television conference system. When another user attempts to participate in the cooperative activity (session), a guardian is assigned to the session and a guardian is assigned also to the user attempting to participate. Allowance or refusal of participation by the user in the session is decided based upon the access control level of the guardian corresponding to the user, a guardian tree defining the path of the guardian and the mutual relationship between the guardians. Claims What is claimed is:
[Control Level] : [Request Allowed]
_none : None
_readable : Reference to object which
receives request
_updatable : Alteration of object which
receives request.
3. The method according to claim 2, wherein the access control information includes an access control level in which a level "_consult", which is for negotiating with a program, has been added. 4. The method according to claim 2, wherein the access control information further includes any of the following four access control levels or a combination thereof:
[Control Level] : [Request Allowed]
_usable : Functional utilization of
object which receives
request
_appendable : Alteration by addition to
object which receives
request
_insertable : Alteration by insertion
in object which receives
request
_deletable : Deletion of object which
receives request.
5. A method of supporting a cooperative activity in which an activity is performed by cooperation among a plurality of participants, said method comprising: a step of entering an access request with respect to the cooperative activity; and a decision step of deciding whether to allow or refuse the access request in relation to at least a list of participants in the cooperative activity, shared data, and an executable program, wherein said decision step includes a step of assigning access control information to each participant in the list of participants in the cooperative activity, each shared data, and each executable program, respectively, and rendering a decision based upon the access control information and the access request, and wherein the access control information uses a group of access control information arranged in a tree structure and a relationship between access control information corresponding to a node thereof is defined by at least the following:
[Mutual relationship] : [Meaning]
_self : Self
_ancestor : Ancestor
_progeny : Progeny.
6. The method according to claim 5, wherein the tree structure maintains a relative positive relationship between nodes constructing a tree. 7. The method according to claim 5, wherein the tree structure is such that an absolute position in the tree structure is maintained within individual items of access control information. 8. The method according to claim 5, wherein the access control information further includes any of the following five mutual relationships or combinations thereof:
[Mutual Relationship] : [Meaning]
_sibling : Sibling (a node having
the same parent node
_parent : Parent (ancestor in the
first degree)
_child : Child (progeny in the
first degree)
_other : No relationship
_anonymous : Relationship not taken
into account.
9. An apparatus for supporting a cooperative activity in which an activity is performed by cooperation over a network among a plurality of participants each comprising a terminal connected to the network, said apparatus comprising: an assignment circuit adapted to assign access control information specifying a level of an allowable access operation for a respective one of a plurality of predetermined relationships between a resource and a requesting participant with respect to each of the resources; an input circuit adapted to enter one of a group of access requests from a requesting participant with a respective access level to one of the resources, the group of access requests including an access request to the shared data, a request for participating the cooperative activity, or a request for executing a program as an access request for the program; and a decision circuit adapted to decide whether to allow or refuse the request entered by said input circuit as the access request for the one resource, wherein said decision circuit allows the request if the respective access level is not higher than the level specified in the access control information assigned to the relationship between the one resource and the requesting participant. 10. An apparatus for supporting a cooperative activity in which an activity is performed by cooperation among a plurality of participants, said apparatus comprising: an input circuit adapted to enter an access request with respect to the cooperative activity; and a decision circuit adapted to decide whether to allow or refuse the access request in relation to at least a list of participants in the cooperative activity, shared data, and an executable program; an assignment circuit adapted to assign access control information to each participant in the list of participants in the cooperative activity, each shared data, and each executable program, respectively; and an evaluation circuit adapted to render a decision to allow or refuse participation based upon the access control information and the access request, wherein the access control information has at least the following three access control levels:
[Control Level] : [Request Allowed]
_none : None
_readable : Reference to object which
receives request
_updatable : Alteration of object which
receives request.
11. The apparatus according to claim 10, wherein the access control information includes an access control level in which a level "_consult", which is for negotiating with a program, has been added. 12. The method according to claim 10, wherein the access control information further includes any of the following four access control levels or a combination thereof:
[Control Level] : [Request Allowed]
_usable : Functional utilization of
object which receives
request
_appendable : Alteration by addition to
object which receives
request
_insertable : Alteration by insertion in
object which receives
request
_deletable : Deletion of object which
receives request.
13. An apparatus for supporting a cooperative activity in which an activity is performed by cooperation among a plurality of participants, said apparatus comprising: an input circuit adapted to enter an access request with respect to the cooperative activity; and a decision circuit adapted to decide whether to allow or refuse the access request in relation to at least a list of participants in the cooperative activity, shared data, and an executable program; an assignment circuit adapted to assign access control information to each participant in the list of participants in the cooperative activity, each shared data, and each executable program, respectively; and an evaluation circuit adapted to render a decision to allow or refuse participation based upon the access control information and the access request, wherein the access control information uses a group of access control information arranged in a tree structure and a relationship between access control information corresponding to a node thereof is defined by at least the following:
[Mutual relationship] : [Meaning]
_self : Self
_ancestor : Ancestor
_progeny : Progeny.
14. The apparatus according to claim 13, wherein the access control information further includes any of the following five mutual relationships or combinations thereof:
[Mutual Relationship] : [Meaning]
_sibling : Sibling (a node having
the same parent node
_parent : Parent (ancestor in the
first degree)
_child : Child (progeny in the
first degree)
_other : No relationship
_anonymous : Relationship not taken
into account.
Description BACKGROUND OF THE INVENTION
[Control Level] [Request Allowed]
_none : None (all requests are
refused)
_readable : Reference to control
object
_usable : Functional utilization of
control object
_appendable : Alteration by addition to
control object
_insertable : Alteration by insertion
in control object
_updatable : Alteration of control
object
_deletable : Deletion of control
object
Among these, the three levels "_none", "_readable" and "_updatable" are essential; some or all of the others may be dispensable. In this embodiment, an example is described in which a decision regarding the addition of a participant is rendered. It will be assumed that allowance or refusal of addition of a participant is judged depending upon whether the access control level possessed is "_appendable" or higher. (b) Guardian path and mutual relationship between guardians Each individual guardian is provided with one path. The path indicates the route to the guardian in a hierarchical structure (hereinafter referred to as a "guardian tree") composed of all guardians in the system. The mutual relationship between guardians is decided, as set forth below, from the positional relationship in the guardian tree. The mutual relationships are listed as follows:
[Mutual Relationship] : [Meaning]
_self : One`s own self
_sibling : Sibling (a guardian
having the same parent
guardian)
_ancestor : Ancestor
_progeny : Progeny
_parent : Parent (ancestor in the
first degree)
_child : Child (progeny in the
first degree)
_other : No relationship
_anonymous : Relationship not taken
into account
The two lowermost relationships are special relationships and are not directly connected with the mutual relationships in the guardian tree. These are defined in order that the guardians of the system may be utilized more effectively. In the above-mentioned relationships, the three relationships "_self", "_ancestor" and "_progeny" are essential; some or all of the others may be dispensable. The relationship between a path and a guardian tree will be described next. The path uniquely identifies the guardian in the guardian tree. The length (number of elements) of the path indicates the depth (generation, where zero is adopted as the starting point) of the guardian tree, and the value of each indicates the number of the child of the respective parent node. In other words, the nth (n.gtoreq.1) value m (m.gtoreq.1) from the left of the path indicates that the guardian expressed by this path is the mth child node of the intermediate node of the (n-1)th generation. However, it is assumed that the guardian of the 0th generation is a guardian corresponding to the root node in the guardian tree. Though there are instances in which the guardian is erased, this does not result in a change in the path of the respective guardian already existing. When a child guardian is generated, a path is made to correspond as a child whose value is "value of guardians generated thus far plus one". For example, in a case where all guardians in a certain system form a guardian tree of the kind shown in FIGS. 6A and 6B, a guardian having a path "<1, 1, 3> is indicated by guardian #07 in FIGS. 6A and 6B. This represents a third-generation guardian, specifically the third child "<1, 1, 3> of the first child "<1, 1> (guardian #04) of the first child "<1>" (guardian #02) of the root node. The assignment of paths at the time of guardian generation will be described in the section on the assignment program (FIG. 8), which is discussed later. (c) Information possessed by guardian Each individual guardian, besides being an identifier capable of uniquely defining the guardian, possesses an access control level for each of the eight mutual relationships regarding the paths. The access control level of each mutual relationship is referred to as a control mask below. This access control level is interpreted by the evaluation program (FIG. 9), described later. In this embodiment, an example is described in which the mutual relationship between guardians is decided by providing a path for each guardian. However, the mutual relationship may be decided by arranging it so that each individual guardian has a link to another guardian. The inclusion program of this embodiment will now be described with reference to the flowchart of FIG. 7. For the purpose of explanation an example will be described in which session information is taken as the control object and an inquiry to a guardian is included in the operation for adding a new participant to the session. In order to clarify the description, the session of interest shall be referred to as "session #0" and the operation for adding on the new participant shall be referred to as "operation #0". First, at the head of operation #0 of session #0 in step S21, operation #0 is changed so as to start up the evaluation program (FIG. 9). Next, the program proceeds to step S22, at which the operation changed at step S21 is registered as operation #0 of session #0. Next, the processing of the assignment program of this embodiment will be described with reference to FIG. 8. The assignment program assigns a guardian to each object at generation of the control object or requesting object. Here an example will be described in which a guardian is assigned based upon the group information of a user at generation of the user information. First, the group to which the user belongs is extracted at step S31. Next, it is determined at step S32 whether the group exists or not. If the group does not exist, the program proceeds to step S33, at which a default group is set, whence the program proceeds to step S34. If the group is found to exist at step S32, on the other hand, then the program proceeds to step S34 without traversing step S33. At step S34, the guardian of the user who is the supervisor of the group is extracted. Assume here that this is "guardian #21". Next, the program proceeds to step S35, at which a guardian is generated anew at a lower order of the guardian tree in FIG. 6A from the path <2,1> of "guardian #21" obtained at step S34. In other words, this guardian is the "_progeny" of guardian #21. It will be assumed here that "guardian #24" has been generated. The guardian tree of FIGS. 6A, 6B and an example of the paths thereof will now be described. In a case where the path of "guardian #21" is <2,1> and the number of children generated up to this point is "m", "guardian: guardian #24" of path "<2,1,m+1>" will be generated anew. For example, when the value of m is "0", we have "<2,1,1>. The "guardian #24" thus generated is set as the guardian of this user (user #14) at step S36 in FIG. 8. Though an example has been described in which a guardian is assigned to a user, a similar technique can be applied by referring to, say, session or tool management information with regard to sessions and tools as well. Further, though the example described is one in which a guardian is generated anew and then assigned, it is also possible to extract an appropriate guardian from a group of existing guardians and then assign this guardian. In order to simplify the description, a case has been described in which the number of guardians assigned to a user is "1". However, an arrangement may be adopted in which a plurality of guardians are assigned and each user possesses a list of the guardians. In this case, an appropriate guardian can be selected using the control object of another party as a selection key. Further, a requesting object or the content of the request may be used in order to select an appropriate guardian. The processing of the evaluation program of this embodiment will be described with reference to the flowchart of FIG. 9. An example utilizing solely a mutual relationship and a control mask in the evaluation program will be described. More specifically, when it is assumed that the guardian is the guardian of a control object, the access control level is decided by selecting one control mask from the mutual relationship between the guardian and the guardian of the requesting object, and the results of evaluation are decided from this access control level. The evaluation program is executed in the access control program. First, at step S41, the mutual relationship between the guardian (guardian #24) of the requesting object and the guardian (guardian #01) of the control object is decided by referring to the guardian tree of FIG. 6A. In this embodiment, "_progeny" is the result, as set forth above. Next, the program proceeds to step S42, at which the control mask corresponding to the corresponding relationship obtained at step S41 is extracted from the guardian (guardian #01) corresponding to the control object. Here the description will be based on the assumption that "_appendable" has been obtained. By referring to the access control level indicated by the control mask, it is determined at step S43 whether the request is a feasible request. In other words, whether participation is allowed or denied is being sought in this embodiment, and it is judged depending upon whether the access control level possessed, has a ranking of "_appendable" or greater. Next, the program proceeds to step S44, at which the result of the determination is given as an answer. In this example, "OK" is the answer. According to this embodiment, merely one control mask in a guardian is utilized as the evaluation condition. However, a situation in which a combination of a plurality of control masks is utilized is also conceivable. Further, according to this embodiment, an example is described in which reference is had only to the control mask of a guardian that has been assigned to a control object. However, it is permissible to utilize the control masks possessed by the guardians of both the requesting object and the control object. FIG. 10 is a flowchart for describing the processing of the refusal program at step S14 in the participation decision program (FIG. 4) of this embodiment. Here an example of a refusal program will be described in which an alert window is made to pop up on the side of the user that issued the participation request. First, at step S51, the user that issued the request is checked based upon the requesting object. The program then proceeds to step S52, at which an alert window indicating "REQUEST DENIED" is caused to pop up on a display screen in the output unit 103 of the terminal being utilized by the user that issued the request. Next, the program proceeds to step S53, at which the requesting object is erased. In this embodiment, an example of access control has been described in which allowance or refusal of participation in a cooperative activity is evaluated based solely upon information possessed by a guardian. However, an explanation can be rendered in the same manner also in a case where use is made of other information capable of being acquired when this processing is executed. Further, access control described in this embodiment may be so arranged that in an environment in which communication is performed via a network, the subject matter communicated, e.g., the content of a request or the results of evaluation, is digitally signed, thereby ensuring this subject matter. In this embodiment, an example has been described in which a program for performing access control is included in processing that is for the purpose of allowing participation in a cooperative activity. However, by including the program in processing for accessing (referring to or updating) shared data or in processing for starting up (tool) or processing for registering a group or user, access control can be applied to each of these processing operations. This ends the description of the first embodiment. [Second Embodiment] A second embodiment of the present invention will now be described. The characterizing features of the second embodiment are as set forth below, although it is not required that the second embodiment be provided with all of these features. (1) Evaluation of access control is performed by delegation to a program other than the access control program 141. This makes possible dynamic evaluation that takes into account the state of execution of the cooperative activity. (2) In addition to the access control level(s) in the first embodiment, an access control level for negotiating with another program is defined. (3) Communication with a program already in execution is performed as a method of negotiating with a program. Control of participation using a guardian in a cooperative editing operation in which a plurality of individuals participate in a manner similar to that of the first embodiment will now be described. As shown in FIG. 14, a feature of this embodiment is that flexible evaluation conforming to the status at the time of execution is made possible by performing evaluation of access control by delegation to a tool. A tool by which a guardian makes an inquiry is referred to as a "master tool" of the guardian. In the example of FIG. 14, a guardian (guardian #55) issues a judgment request to a tool (tool #107) and the tool #107 responds to the request by reporting on the results of the judgment. Accordingly, the tool #107 is the master tool of guardian #55. In the second embodiment, it is assumed that access control similar to that described above is performed based upon a system configuration similar to that of the first embodiment. However, the access control levels possessed by the guardian are extended so as to allow negotiation with a tool. Accordingly, evaluation is performed using the extended evaluation program of FIG. 11 in place of than the above-mentioned evaluation program. (a) Extended access control level As shown below, "_consult" is added as an access control level.
[Control Level] [Request Allowed]
_none : None *(all requests are
refused)
_readable Reference to control
object
_usable : Functional utilization of
control object
_appendable : Alteration by addition to
control object.
_insertable : Alteration by insertion
in control object
_updatable : Alteration of control
object
_deletable : Deletion of control
object
_consult : Decision based upon
result of inquiry to
master tool
Among these, the four levels "_none", "_readable", "_updatable" and "_consult" are essential; some or all of the others may be dispensable. FIG. 11 is a flowchart showing an overview of processing according to an extended evaluation program according to the second embodiment. This program is constructed by extending the evaluation program (FIG. 9) of the first embodiment. This will be described in line with FIG. 14. In a case where the access control level is "_consult", the program is extended is such a manner that the evaluation is made by negotiating with the master tool (tool #107) of the guardian (guardian #55). The extended evaluation program is executed in the above-described access control program 141. First, at steps S61, S62, it is determined whether the access control level is "_consult". If the access control level is not "_consult", then the program proceeds to step S63, at which the result of evaluation obtained by applying the evaluation program (FIG. 9) of the first embodiment is given as the answer. If the access control level is found to be "_consult" at step S62, on the other hand, then the program proceeds to step S64. Here the content of the request, the identifier of the requesting object and the identifier of the control object are delivered to the master tool as criteria. The program then proceeds to step S65, at which negotiation with the master tool (tool #107) is performed and the result sent back is adopted as the answer. FIG. 12 is a flowchart showing an overview of processing according to a master-tool processing program of the second embodiment. Here the operation of the master tool (tool #107) for negotiating with a guardian and assisting the access control program 141 will be described. First, the guardian (guardian #55) of a communicating party is set at start-up of the master tool (tool #107). Communication with a party other than this guardian is not accepted. Next, the program proceeds to step S72, at which a call from the guardian of the communicating party (guardian #55) is awaited. When there is a call, the content of the request from the guardian (guardian #55), the identifier of the requesting object and the identifier of the control object are accepted as criteria. In the second embodiment, the content of the request is "request to participate in session", the identifier of the requesting object is "identifier of user #14", and the identifier of the control object is "identifier of cooperative activity #205". Next, the program proceeds to step S74, at which either allowance or refusal of the request is decided by the decision program. This is followed by step S75, at which allowance or refusal of the request is sent back to the guardian of the communicating party (guardian #55), after which the program returns to step S72. Here negotiation is performed by communication with the process which is executing the program. However, an arrangement may be adopted in which the program is started up anew each time a request is made. FIG. 13 is a flowchart showing processing according to the decision program referred to at step S74 in FIG. 12. Allowance or refusal of a request is decided upon scrutinizing the criteria set to the master tool (tool #107). In the example described here, which relates to the addition of participants to a session, a case will be set forth in which "access inclusive of alteration is prohibited when the number of participants in a cooperative activity exceeds five, and all access is prohibited when the number of participants in the cooperative activity exceeds ten". This decision program is executed in the master tool (master tool #107 in this example). First, at step S81 in FIG. 13, the number of participants in cooperative activity #205 of the control object is counted. It is determined at step S82 whether the number of participants is five or less and whether the access control level is up to "_appendable". If the answer is "YES", then the program proceeds to step S83, at which the request is allowed. In other words, in the second embodiment, "_appendable" is required for the decision regarding the adding on of participants. When this condition is satisfied, therefore, the request to add on participants is allowed. When the condition of step S82 is not satisfied, the program proceeds to step S84, at which it is determined whether the number of participants is ten or less and whether the access control level is up to "_readable". If the answer is "YES", then the program proceeds to step S85, at which the request is allowed. If the decisions rendered at steps S82 and S84 are both "NO", the program proceeds to step S86, at which access in response to the request is not allowed. This is followed by step S87, at which the result of the decision obtained at any of steps S83, S85, S86 is sent back. An example has been described in which the allowance or refusal of participation is decided based upon the number of participants in a cooperative activity. However, the invention is applicable also to data reference and data writing. Though the number of participants has been used as a criterion for making judgments, criteria may also be obtained in the status of shared resources, the communication load upon the network, the load upon the computer, the number of applications run within the computer, etc. Further, an arrangement is conceivable in which a request accepted by a master tool is registered in advance and a decision is made in dependence upon the history of the request. Though an example has been described in which the access control level is decided within one tool, it is possible to perform more flexible judgment of status by making a decision reached by negotiation among a plurality of tools. Conversely, one tool may accept requests from a plurality of guardians and results of decisions on access control may be altered whenever required in dependence upon the status of these requests or the history of the requests In accordance with the second embodiment, as described above, access control information placed in a guardian tree is assigned to each resource in a cooperative activity and allowance or refusal of processing is decided in each individual operation, thereby making flexible, unified access control possible. Further, dynamic access control which takes into account the status of execution of a cooperative activity can be implemented by performing a decision on access control with regard to each resource in a cooperative activity by a program that is being executed. As a result of the foregoing, the following effects are obtained: (1) it is possible to obtain an appropriate service level based upon participants capable of being accommodated by the processing capacity of the system; (2) the security of confidential information is maintained; and (3) a smooth cooperative activity based upon suitable supply of information is assured. <Other Embodiment> The present invention can be applied to a system constituted by a plurality of devices (e.g., host computer, interface, reader, printer) or to an apparatus comprising a single device (e.g., copy machine, facsimile). Further, the object of the present invention can be also achieved by providing a storage medium storing program codes for performing the aforesaid processes to a system or an apparatus, reading the program codes with a computer (e.g., CPU, MPU) of the system or apparatus from the storage medium, then executing the program. In this case, the program codes read from the storage medium realize the functions according to the embodiments, and the storage medium storing the program codes constitutes the invention. Further, the storage medium, such as a floppy disk, a hard disk, an optical disk, a magneto-optical disk, CD-ROM, CD-R, a magnetic tape, a non-volatile type memory card, and ROM can be used for providing the program codes. Furthermore, besides aforesaid functions according to the above embodiments are realized by executing the program codes which are read by a computer, the present invention includes a case where an OS or the like working on the computer performs a part or entire processes in accordance with designations of the program codes and realizes functions according to the above embodiments. Furthermore, the present invention also includes a case where, after the program codes read from the storage medium are written in a function extension board which is inserted into the computer or in a memory provided in a function extension unit which is connected to the computer, CPU or the like contained in the function extension board or unit performs a part or entire process in accordance with designations of the program codes and realizes functions of the above embodiments. The present invention is not limited to the above embodiments and various changes and modifications can be made within the spirit and scope of the present invention. Therefore, to apprise the public of the scope of the present invention, the following claims are made:
|
Same subclass Same class Consider this |
||||||||||
