Topic Management Interface Analysis and Design

 Analysis

 Topic Management Interface manages access and privileges to Topics and used mainly by Topic Owners and Administrators.

 The EPS documentation provides one interface for Topic Management.          

     

   Broker Management  Operations

     Create Topic

     This operation creates a topic or a sub topic under root topic and is independent of the publisher and includes options and metadata related to a topic. The topic with same name        must not exist directly under parent topic and the user should have privileges and authorized to create a topic.

     Per EPS Documentation Story:     

           A new publishing system has been acquired by the medical group and the administrator of the EPS systems has been instructed to create a topic tree to which it will publish. 

           A new topic is created for authorized users. If the user is not authorized a request is generated for topic admins and topic creation is deferred until user authorization is                        granted.

     Get Publisher(s) for Topic

     This operation will retrieve all publishers for a particular topic. The publisher's visibility is controlled by the caller's privileges.

      Per EPS Documentation Story:         

            In considering if a particular topic should be altered, it is desired to find who is publishing to it so they may be consulted. 

           This operation will retrieve all publishers associated with a particular topic.

      Get Subscriptions for Topic

      This operation will retrieve subscriptions for a particular topic. The subscriptions visibility is controlled by the caller's privileges.

      Per EPS Documentation Story:

             Consideration is being given to changing the QOS offered for a topic. Prior to deciding on this change, the existing subscriptions are examined to determine their need. 

            All subscriptions for a particular topic are retrieved. 

   Topic Management  Operations

      Create Affiliation

     This operation creates an affiliation between the user and topic and grants specific privileges to the user and result in automatic revocation of prior affiliations.

     Per EPS Documentation Story: 

           An Ordering system wishes to subscribe to the laboratory notification topic to monitor fulfillment capabilities available.

          An administrator grants the user representing the order system the subscriber affiliation to the topic.

          An affiliation is created between the user and topic for the user who has sufficient privileges and authenticated for the topic requested by the user per user role.

          The user roles required to create affiliation are Owner , Administrator.

          The table below describes the affect of granting Affiliations to the users. 

                        

           Key to effects: X = No change, R = Revoked, I = Implied. 

Grant

Existing Affiliations

 

Administrator

Outcast

Owner

Publish Only

Publish

Subscribe Only

Subscriber

Reviewer

Administrator

X

R

X

X

X

X

X

X

Outcast

R

X

R

R

R

R

R

R

Owner

I

R

X

R

R

R

R

X

Publish Only

X

R

X

X

R

R

R

R

Publish

X

R

X

R

X

R

X

X

Subscribe Only

X

R

X

R

R

X

R

R

Subscriber

X

R

X

R

X

R

X

X

Reviewer

X

R

X

X

X

X

I

X

    Delete Affiliation

    This operation removes an affiliation between a user and topic. May grant ownership to current user if the existing owner is deleted.

    Per EPS Documentation Story:        

         Dr. Smith has left the medical group and should no longer be allowed to publish the group’s internal announcements topic.

         Removes an existing affiliation associated to the user who is authenticated and authorized to remove the affiliation. 

         Removing an affiliation that does to exist is considered valid and will return success.

         User roles required to delete affiliation are Administrator, Owner , Subject of Affiliation.

    Update Affiliation

    This operation update the affiliations for a specific user on a topic. Revokes conflicting affiilations.

    Per EPS Documentation Story:

        Dr. Jones has been designated as the new owner of the infection control topic this operation is used to change the affiliations that affect the infection control topic. 

        Update the affiliations for the user who is authenticated and has an affiliation to the topic.  

        User roles required to perform update affiliation are Owner, Administrator.

    Get Affiliations for Topic

     This operation retrieves list of affiliations for a specific topic and also determines what users have what access to the topic.

     The user must be authenticated to get affiliations.

     Per EPS Documentation Story:

        Nurse Williams would like to publish her department’s scheduled event topic. Nurse Williams first checks to see if they have an existing "Publisher" affiliation with the topic.

        She finds they do not have this level of access, so she identifies the topic administrator so that she can request access

        Only Owners and Administrators will see all the users in the result. individual users will see their affiliations to the topic.

        user roles required to perform Get Affiliations for Topic are any use role.

     Get Affiliations for User

     This operation finds the all the topic affiliations associated to a user.

     Per EPS Documentation Story:

         Dr. Hanks has a new assistant to whom he would like to have the same publication privileges granted. A system administrator uses this operation

         to determine the scope of Dr. Hanks’s accesses and grant publication rights to the new assistant. 

         User roles required to perform Get Affiliations for user are Current User, Filtered by Owner or Administrator, System Administrator.

         This operation may be used by a user to see his/her affiliations. System Administrators will get unrestricted list of results.

     Get Pending Access Requests

     This operation returns a list of pending subscription access requests for a topic.

     Per EPS Documentation Story:

        Assistant Director Niles has established a general policy topic, which is limited to selected individuals and systems.

       This topic has been set up with a limited access model. On a periodic basis he uses this operation to find and view any pending access requests to the topic.

       The user must be authenticated , authorized to perform this operation for the supported feature.

       The user roles required to perform this operation are Owner, Administrator.

     Reject Access Request

     This operation mark a pending access request as denied.

     Per EPS Documentation Story:

        Assistant Director Niles, in reviewing access requests to the policy topic, has noticed a publication access request from a department manager.

        Since the intent is only to have policies on this topic that have been approved by the Assistant Directors or higher, the request is rejected.

        To perform this operation the user should be authorized, authenticated, the request must still be pending and feature should be supported.

        The user roles required to perform this operation are Owner, Administrator.

     Grant Access Request

     This operation marks an access request as granted.

     Per EPS Documentation Story:

        Assistant Director Niles, in reviewing access requests to the policy topic, has noticed a publication access request from the Director of Policy,

        who is an astute administrator. Niles marks it as approved. 

        To perform this operation the user should be authorized, authenticated, the request must still be pending and feature should be supported.

        The user roles required to perform this operation are Owner, Administrator.

    Process Pending Access Requests

    This operation marks grants and rejections of access requests on topic to take effect.Each grant/rejection will generate  a topic management event for the user requested and

    also cause new affiliation to be formed. The granted and rejected requests are removed.

    Per EPS Documentation Story:

        Assistant Director Niles has finished reviewing access requests and granting and rejecting the most obvious requests.

        In order to have these actions take effect, he calls this operation. 

        To perform this operation the user should be authorized, authenticated, and feature should be supported.

        The user roles required to perform this operation are Owner, Administrator.

    As per EPS documentation the following two examples illustrate the Topic Navigation and Topic Administration flows

    Topic Navigation Example:        

                 

    Topic Administration Example:

                  

     

Design

Broker Management Interface

The following Topic related operations should be implemented for creating of Topic, getting list of Publishers and getting list of subscribers.

public CreationResult createTopic(@WebParam(name = "parentTopic") String parentTopic, @WebParam(name = "topicName") String topicName, @WebParam(name = "topicOptions") Topic topicOptions)  throws        NotAuthorizedException, AuthenicationRequiredException,ConflictException, NoSuchTopicException,MediaFormatNotExceptedException, ExpiredException,FeatureNotAvailableException,                                               InvalidDataException,IncompleteDataException; - this method creates a topic or a sub topic and is independent of the publisher and includes options and meta data related to topic.

public List<PublicationContract> getPublishersForTopic(@WebParam(name = "topic") String topic) throws NotAuthorizedException, AuthenicationRequiredException,ExpiredException, NoSuchTopicException; this method returns a list of publishers for a particular topic.

public List<Subscription> getSubscriptionsForTopic(@WebParam(name = "topic") String topic) throws NotAuthorizedException, AuthenicationRequiredException, ExpiredException, NoSuchTopicException; this method returns list of subscriptions for a particular topic.

Topic Management Interface

The following operations should be implemented as part of Topic Management Interface design:

 public boolean createAffiliation(@WebParam(name = "topic") String topic,@WebParam(name = "userId") String userId,@WebParam(name = "role") AffiliationRole role)  throws NotAuthorizedException,  AuthenicationRequiredException,NoSuchTopicException, NoSuchItemException, InvalidDataException;  this method creates the affiliation , updates the audit and revokes the conflicting affiliations.  

 public List<Affiliation> getAffiliationsForTopic(@WebParam(name = "topic") String topicId)  throws NotAuthorizedException, AuthenicationRequiredException,NoSuchTopicException; this method returns list of  Affiliations for Topic based on the users access level.   

 public List<AffiliationMapping> getAffiliationsForUser(@WebParam(name = "userId") String userId)  throws NotAuthorizedException, AuthenicationRequiredException, NoSuchItemException;

 this method returns list of topic affiliations the user has.

 public boolean updateAffiliation(@WebParam(name = "topic") String topic,@WebParam(name = "userId") String userId,@WebParam(name = "role") AffiliationRole role)   throws                                         NotAuthorizedException, AuthenicationRequiredException,NoSuchTopicException, ConflictException; - this method updates the affiliations for a specific user

 public boolean deleteAffiliation(@WebParam(name = "topic") String topic,@WebParam(name = "userId") String userId,@WebParam(name = "role") AffiliationRole role throws                                           NotAuthorizedException, AuthenicationRequiredException, NoSuchTopicException; - this method removes an affiliation between a user and topic.

 public List<AccessRequest> getPendingAccessRequests(@WebParam(name = "topic") String topic) throws NotAuthorizedException, AuthenicationRequiredException,NoSuchTopicException,                FeatureNotAvailableException; - this method finds and returns pending subscription access requests.

 public boolean grantAccessRequest(@WebParam(name = "request") AccessRequest request) throws NotAuthorizedException, AuthenicationRequiredException,ConflictException,                                    FeatureNotAvailableException; - this method marks an access request as granted.

 public boolean rejectAccessRequest(@WebParam(name = "request") AccessRequest request) throws NotAuthorizedException, AuthenicationRequiredException,ConflictException,                                  FeatureNotAvailableException; - this method marks pending access request as denied.

 public boolean processPendingAccessRequests(@WebParam(name = "topic") String topic) throws NotAuthorizedException, AuthenicationRequiredException,NoSuchTopicException,                              FeatureNotAvailableException; - this method causes all the pending access requests - granted or denied to take effect.