Disponiamo di diversi componenti aggiuntivi JMP utilizzati da oltre 100 utenti. I componenti aggiuntivi richiedono JMP, un client Oracle ODBC e menu personalizzati. Inizialmente, abbiamo distribuito i componenti aggiuntivi sui PC dei singoli utenti, il che richiedeva l'installazione di JMP e Oracle, nonché la configurazione dei driver ODBC e dei menu dei componenti aggiuntivi su ciascun PC. È stato un incubo di manutenzione, perché ogni settimana il disco rigido di qualcuno si rompeva o il suo PC veniva sottoposto a una nuova immagine.
Per ridurre questo onere, abbiamo scelto di utilizzare i server Citrix per eseguire JMP e i componenti aggiuntivi. Stiamo passando da Citrix a Microsoft Remote Desktop Protocol (RDP). I vantaggi includono:
In questa presentazione vengono forniti dettagli sulla configurazione del server, sulla sicurezza, sulla configurazione di Oracle, sulla configurazione dei componenti aggiuntivi JMP, sulla manutenzione del codice e su come gli utenti salvano i file da Citrix o RDP.
Mi chiamo Peter Mroz. Lavoro per Johnson & Johnson. Oggi parlerò di server JMP e di come mi ha salvato il mondo. Condividete il mio schermo.
Mi chiamo Peter Mroz e lavoro per Johnson & Johnson Innovative Medicine. Oggi parlerò di come ho utilizzato il server JMP con componenti aggiuntivi per salvare il mio mondo. Premessa standard: questa presentazione rappresenta le mie opinioni. Non implica alcuna approvazione formale di alcun prodotto da parte di Johnson & Johnson.
Chi siamo? Siamo Johnson & Johnson Innovative Medicine. Il nostro scopo è scoprire e sviluppare farmaci e soluzioni innovative che trasformino la vita delle persone e risolvano i più importanti bisogni medici insoddisfatti del nostro tempo. Il mio dipartimento si chiama Global Medical Safety. Abbiamo il compito di proteggere i pazienti promuovendo una solida eccellenza in materia di sicurezza medica e valutazioni dei rischi e dei benefici.
Il mio gruppo si chiama Metodi e Analisi e il nostro obiettivo è sviluppare e implementare strumenti analitici per aumentare l'efficienza e la capacità analitica di rilevare e valutare i segnali di sicurezza. In poche parole, raccogliamo, elaboriamo, riportiamo e analizziamo i dati di sicurezza per la maggior parte dei farmaci di Johnson & Johnson. Il resto del mio team è qui a destra. Potete vedermi qui. Questi sono i miei 4 nipoti, inclusa una nipotina appena nata, qui sotto.
Cosa abbiamo in programma oggi? Parlerò del problema, parlerò della soluzione, poi entrerò nei dettagli dell'ambiente server, parlerò di sicurezza, di come configurare Oracle, di come configurare i componenti aggiuntivi JMP e di alcuni suggerimenti per la manutenzione del codice, e infine di come gli utenti salvano i file da Citrix o RDS. Il problema che abbiamo affrontato è stato che avevamo diversi componenti aggiuntivi JMP utilizzati da oltre 100 utenti e che richiedevano JMP, una connessione a Oracle e menu personalizzati. Inizialmente, li abbiamo distribuiti come componenti aggiuntivi su singoli PC. Quindi ogni PC richiedeva JMP, Oracle, la configurazione dei driver ODBC e i menu aggiunti. Questo ha funzionato, ma la manutenzione è stata un incubo perché ogni settimana il disco rigido di qualcuno si rompeva, il suo PC veniva riconfigurato o ricevevano un nuovo computer senza nulla al suo interno. Era semplicemente un sacco di lavoro.
Siamo passati all'utilizzo di server Citrix per eseguire JMP e i componenti aggiuntivi. Siamo nel bel mezzo del passaggio da Citrix ai servizi di desktop remoto Microsoft o RDS, ma sono fondamentalmente la stessa cosa. I vantaggi includono la necessità di configurare tutto una sola volta. Le prestazioni per i nostri utenti all'estero sono eccellenti perché si inviano semplicemente schermate avanti e indietro. Non si inviano dati a meno che non si salvi qualcosa.
Ci sono livelli di sicurezza aggiuntivi. Quando si apportano modifiche, queste vengono implementate una volta per server, non una volta per utente. Il motivo per cui stiamo passando a RDS è che è meno costoso di Citrix, è un componente di Windows, utilizza un protocollo chiamato Remote Desktop Protocol e per questo è necessaria una licenza di accesso al computer Microsoft.
Questo è il nostro ambiente. Abbiamo un database Oracle e, al momento, tre server Citrix, ma presto saranno convertiti a RDS e utilizzeranno JMP. I nostri utenti sono qui e si collegano tramite un collegamento web ai server, che eseguono JMP e inviano l'output ai loro schermi.
Citrix è una multinazionale americana specializzata in tecnologie di cloud computing e virtualizzazione che fornisce applicazioni server per la virtualizzazione desktop, il networking, il software come servizio e le tecnologie di cloud computing. Inoltre, i servizi desktop remoto Microsoft o RDS forniscono la virtualizzazione delle applicazioni. È possibile mappare unità e stampanti. Si tratta di un protocollo proprietario sviluppato da Microsoft e fornisce agli utenti un'interfaccia grafica per connettersi a un altro computer tramite una connessione di rete. L'utente utilizza il software client integrato di RDS e il computer host deve abilitare il software di servizio RDS.
Abbiamo più server. C'è un problema di bilanciamento del carico. Un po' di informazioni sulla configurazione di RDS, e questo è il massimo che posso dire su RDS. C'è un portale di connessione che sceglie quale server utilizzare per il bilanciamento del carico. C'è un front-end web per RDS su un server separato. È un componente aggiuntivo di RDS. Mostra un elenco di applicazioni. Ecco un paio di applicazioni disponibili per gli utenti, che utilizzano Microsoft IIS per una pagina web. Quindi questo è il massimo che posso dire su questo argomento. Se vuoi configurare RDS o Citrix per la tua azienda, dovrai parlare con il tuo reparto IT.
Per la sicurezza, utilizziamo un sistema chiamato Identity Management System: una volta inviata una richiesta, si viene assegnati a gruppi per sviluppo, QA o produzione. È possibile eseguire JMP solo se si ha accesso a questo gruppo specifico per sviluppo, QA o produzione. Inoltre, disponiamo di tabelle Oracle che elencano i componenti aggiuntivi, gli utenti, i ruoli e, in ogni componente aggiuntivo, connettori per diversi livelli di sicurezza per ciascun utente. Infine, utilizziamo un account amministratore per la manutenzione, per accedere da remoto a un server. Parliamo della configurazione di Oracle.
Sul server, è necessario installare un client Oracle e sono necessarie due variabili d'ambiente. Oracle Home, che è la posizione del client Oracle, e TNS_ADMIN, che è la posizione dei file TNSNAMES.ORA e SQLNET.ORA. TNSNAMES.ORA contiene tutti gli alias dei database e indica a Oracle dove cercare questi database. È necessario determinare il nome del driver Oracle per la connessione ODBC. Per farlo, il modo più semplice è premere il tasto Windows, ODBC, quindi selezionare "Origini dati ODBC a 64 bit", fare clic sulla scheda del driver e verrà visualizzato il nome del driver Oracle, Oracle in OraClient19Home1.
Come si usa questo nome di driver Oracle per stabilire una connessione? Ecco un semplice script JSL. Ho un file chiamato tns_alias. È il mio database. È elencato in TNSNAMES.ORA.
Poi un testo di collegamento: DBQ è il mio alias TNS. Ecco il mio nome utente e la mia password. Poi il testo del driver è driver, e infine ecco il mio Oracle in OraClient19Home1. Questo può essere difficile da trovare. È un buon suggerimento su come trovarlo.
Quindi combiniamo questi due in una stringa DSN e creiamo una connessione al database usandola, assegnandola a questa variabile 1 DBC. La stringa del connettore appare così una volta completata. Quindi, per eseguire SQL usando questa stringa, si chiama execute_sql con un connettore e una semplice istruzione SQL come questa, quindi si chiude la connessione al database. Come si configurano i componenti aggiuntivi di JMP? Si installa jump sul server e poi si creano le cartelle dei componenti aggiuntivi in questa directory.
C: \ProgramData\SAS\JMP\addIns. Il maiuscolo/minuscolo è importante. Quindi P maiuscola, D maiuscola, tutto maiuscolo, I maiuscola. Ci sono volute diverse iterazioni con il supporto JMP per capire che questa è una I maiuscola, e queste sono P maiuscola, D maiuscola. Una volta chiarito questo, funziona correttamente.
Utilizziamo l'"id" del componente aggiuntivo per il nome della cartella. Qui potete vedere un esempio di 5 componenti aggiuntivi presenti su questo server remoto. Ogni cartella contiene un file, semplicemente addin.def. Ecco un esempio del file addin.def.
L'ID identifica l'alias del componente aggiuntivo, com.jnj.gms.pv-analyze-prism. C'è un nome, una home e una versione minima di jump. Cosa significa questa parola "home"? "Home" è il cuore del progetto. "Home" è il luogo in cui sono archiviati tutti gli script JSL per il componente aggiuntivo.
Ecco questa cartella, e poi ecco tutti i miei script JSL. Il file addin.jmpcust memorizza il menu per il componente aggiuntivo. Tutti i nostri componenti aggiuntivi sono menu personalizzati. Ma parliamo di menu. Con il modo in cui li abbiamo impostati, non vogliamo che nessuno esegua le opzioni del menu se non dispone di adeguate misure di sicurezza.
Ogni voce di menu dichiara una variabile globale che punta a un programma, incluso un programma di avvio per verificare la sicurezza. Per visualizzarla, puoi cliccare su Visualizza, Personalizza menu e barre degli strumenti, quindi in alto a destra cliccare su Cambia, selezionare Componente aggiuntivo JMP, quindi selezionare il componente aggiuntivo desiderato e infine fare clic su OK. Ora vedrai il menu per questo particolare componente aggiuntivo illuminato. Puoi apportare modifiche. Ecco una tipica voce di menu. Ho una variabile globale che punta al programma da eseguire, apri datatable.jsl.
Questo componente aggiuntivo di dati ha l'ID all'interno, il che significa che non è necessario comunicarlo a JMP. Non è necessario specificare la posizione effettiva del disco rigido. JMP cerca semplicemente qui e lo decodifica dal file addin.dev. La seconda riga dice di includere questo script launch_pva_menu.jsl. È ciò che è inserito nella sezione azioni del menu. Basta eseguire questo JSL. Devi anche controllare, usa questa cartella home del componente aggiuntivo, com.jnj.gms.pv-analyze-prism. Ecco il programma di avvio. Stiamo includendo un paio di funzioni, uno script di accesso al database. Quindi chiamo un utente PPA valido.
Cerca l'utente nelle tabelle di sicurezza di Oracle. Se non è presente correttamente nelle tabelle, viene visualizzato un messaggio di errore e l'utente viene espulso. Ci sono alcune dipendenze dalla versione di JMP. Credo che questo sia stato scritto prima che avessimo la versione minima di JMP nel file addin.dev, o forse non ne ero a conoscenza.
Ma, in ogni caso, una volta superato questo passaggio, cercheremo di vedere se c'è qualcosa nel nome del programma. Se contiene un'estensione JMP, ovvero un generatore di applicazioni, apriamo il programma. Altrimenti, è uno script JSL e lo includiamo. Per la manutenzione del codice, abbiamo tre ambienti: sviluppo, controllo qualità e produzione, e 1 server per lo sviluppo, 1 per il controllo qualità e 3 per la produzione.
Dopo la convalida, i file aggiornati vengono copiati sui server appropriati. Io uso un programma chiamato Total Commander per sincronizzare queste cartelle, e lo vedremo tra un minuto. Citrix e RDS sono un po' diversi. In realtà, accedere ai file sul tuo... Almeno noi usiamo un programma chiamato OneDrive. È diverso.
Se si salva sul desktop o sui documenti del server e di JMP, il salvataggio verrà eseguito sul server stesso, il che non è consentito. Per facilitare questa operazione, clicchiamo su "Preferenze file" per la posizione dei file. Quindi, sia per la directory dei file di dati che per la directory "Salva con nome", specifichiamo in questo caso la nostra posizione su OneDrive. La differenza tra Citrix e RDS è leggermente diversa. Citrix è Client\C$. Questo è tsclient\C.
Ma il resto riguarda gli utenti, il tuo nome utente, OneDrive, JNJ. Questa è la nostra posizione OneDrive personalizzata. Da quel momento in poi, ogni volta che apri o salvi un file, verrà automaticamente indirizzato al tuo OneDrive e non tenterà di salvarlo sul server.
Facciamo una rapida demo. Vai qui. Questa è la mia schermata di accesso per RDS. Procedo con l'accesso. Verrà generato un file RDP e poi eseguito. Se clicchi con il pulsante destro del mouse qui, vuoi che questa opzione venga selezionata. Apri sempre file di questo tipo. Mi sta solo connettendo qui. Ecco Server JMP in esecuzione sulla nostra istanza di sviluppo, e posso aprire qualcosa... I miei dati, e andiamo, distribuzione.
Poi lo salveremo. Lo salverò sul mio OneDrive. Lo metterò in una cartella chiamata temp. Bene. Ora l'ho salvato sul mio disco rigido. Sembra che stia ancora salvando. Ora ho JMP in esecuzione localmente sul mio computer, e vediamo cosa succede se clicco e trascino questo qui. Eccolo qui. L'ho generato su un server e, c'è solo un modo per dimostrare che funziona davvero.
Ok. L'altra cosa che volevo mostrarvi era il server stesso. Qui sono connesso al server RDS vero e proprio. Abbiamo JMP 16 e JMP 18 installati qui, e questa è la mia utility che uso, chiamata Total Commander.
Volevo solo mostrarti un esempio di quando ho dei dati in attesa di essere copiati sul server. Questo è su una condivisione file. Questa posizione D è la posizione del componente aggiuntivo per questa particolare applicazione. Sincronizzerò le directory con questo pulsante qui, le confronterò e le ordinerò per data. Sembra che ci siano un paio di file qui che possono essere aggiornati.
Voglio farne solo una, però. Una delle mie funzionalità preferite è che posso cliccare con il tasto destro del mouse qui e dire "Confronta sinistra e destra". Questa è stata una modifica semplice. C'era un commento nel posto sbagliato e l'ho inserito qui nel posto giusto. Se voglio sincronizzarlo, clicco su "Sincronizza". Copia tutto. Fatto. Questo è tutto ciò che volevo dimostrare per JMP server. Torniamo alla nostra presentazione. In conclusione, eseguire JMP su un server è ottimo per i componenti aggiuntivi. È necessario configurare le cose una sola volta.
Le prestazioni per i nostri utenti all'estero sono eccellenti. Sono disponibili livelli di sicurezza aggiuntivi e le modifiche vengono implementate una volta per server, non una volta per utente. In pratica, JMP per server più i componenti aggiuntivi hanno fatto risparmiare un sacco di soldi. Tutto qui. Grazie mille.