Construire des plug-ins pour SAS® Management Console SAS 9.1 Janvier 2005 Sommaire 1 INTRODUCTION ................................................................................................................................................... 3 1.1 1.2 OBJECTIFS .......................................................................................................................................................... 3 PERIMETRE ........................................................................................................................................................ 3 2 LES COMPOSANTS DE SAS MANAGEMENT CONSOLE ............................................................................ 4 3 LA CONSTRUCTION DE PLUG-IN ................................................................................................................... 6 3.1 3.2 3.3 DEVELOPPEMENT D’UN PLUG-IN TOOL .............................................................................................................. 6 DEVELOPPEMENT D’UN PLUG-IN NAVIGATION................................................................................................. 15 DEVELOPPEMENT D’UN PLUG-IN D’EXTENSION ................................................................................................ 21 Page 2 sur 22 1 INTRODUCTION 1.1 OBJECTIFS SAS Management Console est une console Java d’administration unique qui permet d'administrer tout le Système SAS® et ses métadonnées depuis un point d'accès convivial et portable sur tous les environnements décisionnels. Ce point central de la plateforme SAS vous permet de gérer la sécurité de vos ressources en fonction des utilisateurs, les différents serveurs SAS et bibliothèques présents dans votre organisation, les référentiels de vos métadonnées, les licences de vos serveurs SAS. Cet outil offre ces possibilités à travers l’utilisation de composants appelés « plug-ins ». Grâce à sa conception en technologie Java, la console d’administration de SAS® 9 devient complètement personnalisable et vous laisse une grande liberté d’action : vous avez la possibilité de créer vos propres plug-ins pour répondre aux besoins spécifiques de votre entreprise. 1.2 PERIMETRE Ce document est propre à la version SAS 9.1. Page 3 sur 22 2 LES COMPOSANTS DE SAS MANAGEMENT CONSOLE Voici l’interface de SAS Management Console : Nous pouvons décomposer cette console en différentes parties : Page 4 sur 22 La barre de menus contient les menus suivants : File, Edit, Actions, View, Roadmaps, Help. Le menu Actions apparaît seulement s’il y a des actions possibles en fonctions du plug-in sélectionné. La barre d’outils inclut des boutons permettant les actions suivantes : Up (Dossier Parent,), Open, Copy, Paste, et Delete. Le plug-in sélectionné peut désactiver certains de ces boutons ou en ajouter selon le cas. La barre du référentiel permet à l’utilisateur de choisir le référentiel qu’il souhaite afficher. L’arbre de navigation affiche des nœuds correspondants aux différents plug-ins disponibles dans votre SAS Management Console. Il supporte l’agrandissement et la réduction des nœuds selon le plug-in sélectionné. La zone d’affichage correspond au lieu où apparaissent les informations relatives au nœud sélectionné. Les plug-ins installés par défaut dans SAS Management Console sont les suivants : Authorization Manager Définition des droits sur les métadonnées en fonctions des différents groupes et/ou utilisateurs. Data Library Manager Création des bibliothèques et des schémas de base de données. Metadata Manager Définition d’un référentiel de métadonnées, réalisation des actions de réplication ou de promotion. Schedule Manager Planification de l’exécution de traitements créés dans SAS ETL Studio. Server Manager Définition des différents serveurs SAS. User Manager Création des utilisateurs et des groupes. License Manager Visualisation des informations relatives à vos licences SAS XMLMap Manager Importation et création des XMLMaps qui sont des interpréteurs de fichiers XML. ® Maintenant intéressons-nous au développement de notre propre plug-in. Page 5 sur 22 3 LA CONSTRUCTION DE PLUG-IN Tout dépend en fait du type de plug-in que vous souhaitez développer. Dans tous les cas il vous faudra implémenter une interface correspondant à un ensemble de classes et de méthodes Java utilisables. Disponibilité du plug-in dans… L’arbre de navigation Type de plug-in Navigation Classe à implémenter PluginNavigationInterface Un plug-in de navigation apparaît dans l’arbre de navigation et offre des fonctionnalités dans la zone d’affichage, la barrer de menus, et la barre d’outils. Une fenêtre séparée En collaboration avec un autre plug-in Tool PluginToolInterface Extension Un plug-in Tool est listé dans le menu « Tools » et apparaît lors de son activation dans une fenêtre séparée. PluginExtensionInterface Un plug-in d’extension fonctionne en collaboration avec d’autres plug-ins, en permettant l’ajout d’actions dans leur menu, barre d’outils, ou en ajoutant des onglets à leur fenêtre de « propriétés ». Le développement de plug-in requiert des connaissances en programmation Java, mais grâce à la suite de ® développement Java de SAS : SAS AppDev Studio, la démarche est simplifiée. En effet, avec WebAF 3.0 vous pouvez, directement en créant un nouveau projet, spécifier que vous souhaiter développer un plug-in pour la SAS Management Console, le produit prépare alors les fichiers et les implémentations nécessaires à sa réalisation. 3.1 DEVELOPPEMENT D’UN PLUG-IN TOOL Pour la création d’un tel plug-in, lancez WebAF, puis créez un nouveau projet. Choisissez comme type de projet « SASMC Plug-in Project ». Définissez un nom, un package (prenez « sas.smc » qui est le package par défaut des plug-ins pour SAS Management Console). Page 6 sur 22 Page 7 sur 22 Choisissez ensuite le type de plug-in, dans notre cas « Tool », puis cliquez sur « Finish ». Page 8 sur 22 WebAF génère automatiquement un fichier Java, et un fichier de propriétés. Vous pouvez alors commencer le développement de votre plug-in. A partir de ce moment, vous pouvez compiler votre projet, créer un fichier Jar, et le déployer dans votre SAS Management Console. Il en résultera l’ajout d’un objet dans le menu « Tools » de la console. Mais lorsqu’on active notre plug-in, nous souhaitons que les informations relatives aux modes de contact du Support Clients SAS France s’affichent. Intéressons-nous donc au fichier Java généré (dans notre cas fabricePlugin.java) et personnalisons-le avec notre code. Nous voulons créer un événement au moment de l’activation de notre plug-in, rajoutons-donc notre code au niveau de la définition de la méthode « actionPerformed » qui correspond à l’action déclenchée lorsque l’utilisateur cliquera sur notre objet. public void actionPerformed(java.awt.event.ActionEvent event) { javax.swing.JFrame frame = new JFrame ("Support France") ; javax.swing.JPanel panel = new JPanel() ; frame.setSize(500,150) ; Container container = frame.getContentPane(); container.setLayout(new BorderLayout()); JPanel topPanel = new JPanel(); Page 9 sur 22 Clients SAS topPanel.setLayout(new BoxLayout(topPanel, BoxLayout.X_AXIS)); JPanel infoPanel = new JPanel(); infoPanel.setBorder(new EmptyBorder(10, 10, 0, 10)); infoPanel.setLayout(new GridBagLayout()); GridBagConstraints c = new GridBagConstraints(); c.gridx = 0; c.gridy = 1; c.gridwidth = 3; c.weightx = 0.0; c.weighty = 0.0; c.fill = GridBagConstraints.BOTH; c.anchor = GridBagConstraints.WEST; c.insets = new Insets(10, 0, 2, 15); JLabel supportTel = new JLabel("Par téléphone : 01 60 62 12 12" ); supportTel.setForeground(Color.black); infoPanel.add(supportTel, c); c.gridy = GridBagConstraints.RELATIVE; c.insets = new Insets(2, 0, 15, 5); JLabel supportWeb = new JLabel("Par Internet http://www.sas.com/offices/europe/france/services/support/submit_emits3.html" ); supportWeb.setForeground(Color.black); infoPanel.add(supportWeb, c); container.add(BorderLayout.NORTH, infoPanel); : frame.show() ; } } Dans ce code nous créons simplement une « frame » qui contiendra le numéro de téléphone pour joindre le Support Clients SAS France, ainsi que l’adresse internet pour ouvrir un dossier en ligne. Page 10 sur 22 Nous allons maintenant compiler et construire le fichier Java archive (JAR) qui va nous permettre le déploiement. Pour ce faire cliquer sur « Build », puis « Project Tasks », et enfin sur « package-smcPlugin » : Page 11 sur 22 WebAF compile et construit l’archive à l’endroit où vous avez créé votre projet. Ensuite pour que votre plug-in soit visible dans SAS Management Console, il vous faut copier ce fichier Jar dans le répertoire dédié à l’installation de plug-in pour SAS Management Console. Sous Windows ce répertoire est par défaut : C:\Program Files\SAS\SASManagementConsole\9.1\plugins Page 12 sur 22 Relancez ensuite votre console d’administration pour bénéficier du nouveau plug-in, actionnez-le en utilisant le menu « Tool », puis le nom que vous avez donné à votre nouvel objet : Page 13 sur 22 Vous venez donc de créer votre premier plug-in dans SAS Management Console. Nous allons maintenant nous intéresser à un deuxième type de plug-in, qui permet un affichage dans l’arbre de navigation. Page 14 sur 22 3.2 DEVELOPPEMENT D’UN PLUG-IN NAVIGATION Nous allons créer ici un exemple qui vous permettra de consulter l’arborescence de votre configuration SAS 9 depuis la console d’administration. Tout d’abord il faut savoir qu’il existe différentes catégories de plug-in de navigation dans SAS Management Console. Vous devez choisir à quel endroit vous souhaiter voir apparaître votre plug-in. Environment Management Monitoring Maintenance Application Management De la même manière que pour le plug-in Tool, il est nécessaire de créer un nouveau projet dans WebAF de type « SASMC Plug-in » en prenant soin de définir un nom, et un package. Page 15 sur 22 Choisissez ensuite le type de plug-in, dans notre cas « Navigation», puis cliquez sur « Finish ». Remarquez ici que vous pouvez cocher des cases afin que WebAF crée des fichiers correspondants aux attentes particulières de votre plug-in, notamment si celui-ci requiert une connexion à un serveur de métadonnées. Page 16 sur 22 La fenêtre suivante nous invite à choisir la catégorie dans laquelle on souhaite afficher notre plug-in, l’image qui lui servira d’icône, le texte affiché lorsque le pointeur de la souris le survolera, son type d’affichage, et enfin s’il supporte le « glisser-lâcher ». Page 17 sur 22 Une fois toutes ces informations saisies, WebAF se charge de créer les fichiers correspondants dans le projet. Vous pouvez désormais procéder au développement. Vous avez la possibilité d’interagir ici avec toutes les actions disponibles pour un plug-in de navigation standard. C'est-à-dire que vous pouvez créer des nœuds sous votre plug-in en spécifiant quel affichage doit en découler dans la zone d’affichage. Ici nous avons décidé d’afficher les fichiers présents dans le répertoire où vous avez créé votre configuration, au moment où l’utilisateur clique sur notre plug-in. Pour ce faire nous avons personnalisé la classe correspondant au nœud principal de notre plug-in : Cette classe se nomme : nom_de_votre_pluginRootNode : […] public fabriceNavigationPluginRootNode( String strName ) { super( plugin, strName ); PluginNavigationInterface m_childNodesList = new Vector(); m_itemList = new Vector(); //to be overwritten by your own code File rootDirectory = new File("C:\\SAS9\\Config\\"); File[] contentOfRoot = rootDirectory.listFiles(); for(int counter=0; counter<contentOfRoot.length; ++counter) Page 18 sur 22 plugin, { m_itemList.add(new fabriceNavigationPluginItem(this, contentOfRoot[counter].getPath())); } m_tableModel = new fabriceNavigationPluginTableModel(this, m_itemList); } […] Puis nous devons modifier la classe nom_de_votre_pluginTableModel qui correspond aux méthodes relatives à l’affichage du résultat dans la zone d’affichage : […] /* * Gets the number of columns in the table * * return: Iinteger representing the number of columns in the table */ public int getColumnCount() { //overwrite the following line to return the number of columns return 1; } /* * Gets the column name of the column at the given index in the table * * param: columnIndex Index of the column in the table * return: Name of the column at the given index */ public String getColumnName( int columnIndex ) { String strColumnName = ""; //overwrite the following lines to //determine the colum name based on the column index strColumnName = fabriceNavigationPlugin.m_rb.getString("fabriceNavigationPluginTableModel.Colum nHeader.1.txt"); return strColumnName ; } […] Une fois ces étapes réalisées, comme pour le plug-in Tool, il vous faut copier ce fichier Jar dans le répertoire dédié à l’installation de plug-in pour SAS Management Console afin qu’il soit visible dans la console d’administration. Sous Windows ce répertoire est par défaut : C:\Program Files\SAS\SASManagementConsole\9.1\plugins Relancer ensuite votre console d’administration pour bénéficier du nouveau plug-in, en cliquant dessus à travers l’arbre de navigation. Page 19 sur 22 Vous venez donc de créer un nouveau plug-in de navigation. A travers WebAF vous avez la possibilité d’exécuter toutes les actions que vous souhaitez (menu contextuel, fenêtre propriété, double clique en zone d’affichage,…), néanmoins une certaine connaissance du langage Java est un atout majeur dans ce cas là. Page 20 sur 22 3.3 DEVELOPPEMENT D’UN PLUG-IN D’EXTENSION Les plug-ins d’extension sont quant à eux des plug-ins permettant d’interagir avec des plug-ins déjà existants en ajoutant des actions lors de l’activation d’entrée du menu contextuel, ou de la barre d’outils. De la même manière que les autres plug-ins, WebAF simplifie la création de ce type de plug-in. Finalement, la construction de plug-in peut s’avérer très utile dans le cas d’une réponse à un besoin particulier dans une entreprise. La technologie de développement de SAS Management Console permet de personnaliser cette dernière, et SAS AppDev Studio propose à travers WebAF une assistance au développement qui s’avère précieuse. En effet, le développement ne semble pas aisé au départ mais une fois que WebAF a généré les fichiers nécessaires, on appréhende la façon dont SAS Management Console fonctionne, et la tâche se simplifie grandement. Page 21 sur 22