M_srgs.idl



#ifndef __PROSPECT_SUBSCRIPTION_IDLFILE_M_srgs_idl__
#define __PROSPECT_SUBSCRIPTION_IDLFILE_M_srgs_idl__




///////////////////////////////////////////////////////////////////////
//
// Subscription Registrar Interface Definitions
// Description: This module defines the interface of the Subscription
//	Registrar CO.
// Created: 29/7/96
// By: D.Lewis, A.DaCruz
//
///////////////////////////////////////////////////////////////////////
// Modifications:
//	Date: 29/7/96
//	By: D.Lewis
//	Reason: initial version based on TINA/TANGRAM
//		subscription models.
//
//	Date: 2/8/96
//	By: D.Lewis
//	Reason: 
//		- add setSubscription operation to i_subscrnCntrl 
//		  interface
//		- change parameter service_profile in setSvcProfile
//		  from t_SvcProfileId to t_SvcProfile
//		- add checkConfig operation to i_subscrnInfoQuery
//		  interface
//		- add exception e_subInvalidSvcProfile to those raised
//		  by operation getSvcProfile
//	Date: 22/10/96
//	By: T.Tiropanis
//	Reason: Changed all identifiers with SVC to Svc
//
//	Date: 6/11/96
//	By: D.Lewis
//	Reason: added exception e_InvlidSvcTempalte to those returned by 
//		method subscription in interface i_SubscrnMgmt
//
//	Date: 10/12/96
//      By: D.Lewis
//      Reason: change prefix of exceptions from e_8 to e_sub* 
//
//
//	Date: 6/1/97
//      By: D.Lewis
//      Reason: added svc_id to cancel because need to delete subscription
//
//	Date: 19/9/97
//	By: D.Lewis
//	Reason: added new operation i_SubscrnInfoQuery:getProfileIdList
//
//	Date: 7/10/97
//	By: D.Lewis
//	Reason: added new operation i_subscrnInfoQuery:getProfileInfo
//
//	Date: 11/2/98
//	By: J.Klein
//	Reason: 
//		- added parameter svc_id to i_srInit.srgs_init()
//		- added getSLA () to i_subscrnInfoQuery
//
///////////////////////////////////////////////////////////////////////




#include "C_sub.idl"




///////////////////////////////////////////////////////////////////////
//
// begin module SubRgs
//

module SubRgs {



interface i_srgsCO {};





///////////////////////////////////////////////////////////////////////
//
// SubRgs Lifecycle Management Interface (i_srInit)
// 
// This interface acts as a factory interface to create SubRgs COs
//

interface i_srInit: i_CoInit {


	void rgs_init (
		in	string		svc_id,
		out	t_IntRefList	generated_ref_list)
		raises	(e_subAccessDenied);

		// This operation will create a new SubRgs CO acting
		// for the given service id.
		// The operation is used to implement subclassing of
		// this CO.	     
		//////////////////////////////////////////////////

	void rgs_terminate (
		in	string		svc_id)
		raises	(e_subAccessDenied);

};




///////////////////////////////////////////////////////////////////////
//
// SubRgs Subscription Registrar Management (i_srMgmt)

interface i_srMgmt: i_CoMgmt {};



///////////////////////////////////////////////////////////////////////
//
// SubRgs Subscription Management Interface (i_subscrnMgmt)
//	"This interface allows for the setup and subsequent
//	modification of service subscriptions. It provides an interface
//	available to the provider administraot only";

interface i_subscrnMgmt {


	void subscribe (
		in	string			account_no,
		in	t_SubscriptionContract	subscr_contract )

		raises	(e_subAccessDenied,
			e_subInvalidAccountNo,
			e_subInvalidSvcTemplate);

		// The result of this information is to create a
		// SubscriptionContract relationship between a
		// subscriber and a ServiceTemplate. The
		// SubscriptionRegistrar should check to make sure
		// the Subscriber object already exists. The
		// SubscriptionRegistrar the creates a
		// SubscriptionContract relationship.
		// If a SubscriptionPortfolio does not exist for
		// the subscriber, then one is created by the
		// SubscriberManager and the SubscriptionContract
		// object is added to it.
		//////////////////////////////////////////////////


	void cancel (
		in	string			account_no,
		in	t_SvcId			svc_id ) 	

		raises	(e_subAccessDenied,
			e_subInvalidAccountNo);

		// This operation terminates a subscribers
		// subscription to a service. The
		// SubscriptionContract object, the Subscription,
		// and all the associated ServiceProfiles are
		// deleted. Also, all assignments of ServieProfiles
		// to SAG are deleted. The SAG themselves are not
		// deleted as a result of this operation.
		//////////////////////////////////////////////////


	void activate (
		in	string			account_no,
		in	t_SagId			sag_id )

		raises	(e_subAccessDenied,
			e_subInvalidAccountNo,
			e_subInvalidSAG);


		// This operation allows a client to request
		// that a subscription be activated, i.e. a
		// particular SAG associated with a Subscriber
		// now use a particular service. This operation
		// requires previous assignment of a ServiceProfile
		// to a SAG. this operation corresponds to the
		// authorization stage of the service lifecycle.
		//////////////////////////////////////////////////


	void deactivated (
		in	string			account_no,
		in	t_SagId			sag_id )

		raises	(e_subAccessDenied,
			e_subInvalidAccountNo,
			e_subInvalidSAG);

		// This operation prevents a particular SAG from
		// using a particular service, i.e. it is the
		// opposite of the activate operation.
		//////////////////////////////////////////////////


	void modifySubscriptionContract (
		in	string			account_no,
		in	t_SubscriptionContract	subscr_contract )

		raises	(e_subAccessDenied,
			e_subInvalidAccountNo);

		// This operation allows the modification of a subscription
		// contract. The service id cannot however be modified
		//////////////////////////////////////////////////


};  // end of i_subscrnMgmt interface




///////////////////////////////////////////////////////////////////////
//
// SubRgs Subscription Control Interface (i_subscrnCntrl)
//	"This interface allows for the setup and subsequent
//	modification of service subscriptions.";

interface i_subscrnCntrl {



	void setSubscription (
		in	string			account_no,
		in	t_Subscription		subscription)

		raises	(e_subAccessDenied,
			e_subInvalidAccountNo);	

		// This operation allows the details of a subscription
		// object to be instatiated. Since a subscriber can have
		// only one subscription to a service, the account number
		// implicitly associates this subscription with a
		// subscription contract.
		//////////////////////////////////////////////////


	void assign (
		in	string			account_no,
		in	t_SagId			sag_id,
		in	t_SvcProfileId		svc_profile_id )

		raises	(e_subAccessDenied,
			e_subInvalidAccountNo,
			e_subInvalidSAG,
			e_subInvalidSvcProfile);

		// The result of this operation is to assign the
		// ServiceProfile to a SAG, and the ServiceProfile
		// should exist to do this operation.
		//////////////////////////////////////////////////


	void deassign (
		in	string			account_no,
		in	t_SagId			sag_id )

		raises	(e_subAccessDenied,
			e_subInvalidAccountNo,
			e_subInvalidSAG);

		// This operation delets the assignment of a
		// ServiceProfile to a SAG, i.e. it is the opposite
		// of the assign operation.
		//////////////////////////////////////////////////


	void setSvcProfile (
		in	string			account_no,
		in	t_SvcProfile		svc_profile )

		raises	(e_subAccessDenied,
			e_subInvalidAccountNo,
			e_subInvalidSvcProfile);

		// This operation allows for the setting of the
		// service profile for a specifc subscription,
		// specified implicitly by the account number
		// Note the attribute settings of a
		// ServiceProfile may not override the mandatory
		// settings of the Subscription.
		//////////////////////////////////////////////////


	void delSvcProfile (
		in	string			account_no,
		in	t_SvcProfileId		svc_profile_id )

		raises	(e_subAccessDenied,
			e_subInvalidAccountNo,
			e_subInvalidSvcProfile);

		// This operation deletes a particular ServiceProfile
		//////////////////////////////////////////////////


	void getSubscriptionContract (
		in	string			account_no,
		in	t_SvcId			svc_id,
		out	t_SubscriptionContract	subscr_contract )

		raises	(e_subAccessDenied,
			e_subInvalidAccountNo);

		// This operation allows for the retrieval of service
		// contract information.
		//////////////////////////////////////////////////

}; // end of i_subscrnCntrl interface




///////////////////////////////////////////////////////////////////////
//
// SubRgs Subscription Info Query Interface (i_subscrnInfoQuery)
//	This interface allows a client to get subscription and
//	service characteristics.

interface i_subscrnInfoQuery {


	void getSubscription (
		in	string			account_no,
		in	t_SvcId			svc_id,
		out	t_Subscription		subscription )

		raises	(e_subAccessDenied,
			e_subInvalidAccountNo);

		// This operation gets the global subscription
		// characteristics for a subscriber to a particular
		// service.
		//////////////////////////////////////////////////


	void checkConfig (
		in	t_SagId			sag_id,
		in	t_Configuration		configuration,
		in	t_SelectionKey		selection_key,
		out	boolean			config_OK,
		out	t_SvcProfileId		svc_profile_id)

		raises	(e_subAccessDenied,
			e_subInvalidSAG);



	void getUsersSubscriber (
		in	t_UserId		user,
		out	string			account_no )

		raises	(e_subAccessDenied,
			e_subInvalidAccountNo,
			e_subInvalidUser);



		// This operation returns for a given username
		// the associated subscribers id (account number).
		//////////////////////////////////////////////////


	void getSvcProfile (
		in	string			account_no,
		in	t_SagId			sag_id,
		out	t_SvcProfile		svc_profile )

		raises	(e_subAccessDenied,
			e_subInvalidAccountNo,
			e_subInvalidSAG,
			e_subInvalidSvcProfile);



		// This operation gets the Serviceprofile
		// corresponding to a particular SAG for a
		// particular service.
		//////////////////////////////////////////////////


        void getProfileIdList (
                in      string                  account_no,
                in      t_SvcId                 svc_id,
                out     t_SvcProfileIdList      svc_profile_id_list )

                raises  (e_subAccessDenied,
                        e_subInvalidAccountNo,
			e_subInvalidSvcTemplate,
                        e_subInvalidSvcProfile);


	void getProfileInfo (
		in	string			account_no,
		in	t_SvcProfileId		svc_profile_id,
		out	t_SvcProfile		svc_profile)

		raises	(e_subAccessDenied,
                        e_subInvalidAccountNo,
                        e_subInvalidSvcProfile);

	void getSLA (
		in	string			account_no,
		in	t_SvcId			svc_id,
		out	t_SLA			sla)
		raises	(e_subAccessDenied,
			 e_subInvalidAccountNo );

		// This operation gets the service level agreement
		// corresponding to a subscription for a
		// particular service.
		//////////////////////////////////////////////////


}; // end of i_subscrnInfoQuery interface


}; // end of SubRgs Module



//
// end of module SubRgs
//
///////////////////////////////////////////////////////////////////////




#endif