Moduł skryptowy

Moduł skryptowy integruje silniki Octave i Python, umożliwiając użytkownikom pisanie i uruchamianie obliczeń przy użyciu dowolnego języka w portalu wymagań i systemów. Moduł został zaprojektowany do wykonywania złożonych obliczeń, które nie są możliwe za pomocą standardowego ValiEngine.

Jeśli użytkownicy chcą manipulować innymi obiektami niż numeryczne Valis, muszą użyć interfejsu API Python portalu Requirements & Systems Portal. Przykładowe przypadki użycia obejmują:

  • Tworzenie wartości i zbiorcze dodawanie jej do wielu bloków

  • Zbiorcze edytowanie identyfikatorów wymagań

  • Uruchamianie symulacji przy użyciu Pythona

  • Konwersja jednostek mocy na kW.

  • Uruchamianie niestandardowego przepływu pracy na podstawie automatycznych wyzwalaczy

Przepływ modułu skryptowego

Aby skorzystać z modułu, użytkownik tworzy nowy skrypt, dodaje dane wejściowe/wyjściowe, zapisuje kod w formacie .m lub .py i uruchamia kod w celu uzyskania żądanych danych wyjściowych.

Przepływ pracy modułu skryptowego.

Tworzenie nowego skryptu

Aby utworzyć nowy skrypt, kliknij opcję "+ Script" (1) w modułach skryptowych.

image-20240324-150602.png

Pojawi się okno dialogowe umożliwiające wprowadzenie nazwy skryptu, wybór silnika (Octave lub Python) oraz dodatkowe opcje do wykorzystania/ponownego wykorzystania przez użytkownika z szablonów.

image-20240324-151035.pngOpcja tworzenia nowego skryptu

Niestandardowe akcje w szablonach są wyjaśnione w osobnej dokumentacji. Więcej informacji można znaleźć tutaj.

Użytkownicy mają również możliwość utworzenia skryptu jako "skryptu globalnego", przełączając opcję z opcji pokazanej na rysunku Create New Script Option.

Po utworzeniu nowego skryptu użytkownicy mogą również tworzyć dodatkowe pliki tekstowe, JSON i YAML dla swoich skryptów. Aby dodać nowy plik, kliknij opcję "+Dodaj plik" (1), dodaj nazwę i wybierz typ pliku w oknie dialogowym. Spowoduje to dodanie pliku do skryptu.

Aby użyć któregokolwiek z dodatkowo utworzonych plików, użytkownicy muszą dołączyć następujące dwie linijki kodu u góry pliku main.py:

import site
site.addsitedir('script_code/')

Po tych dwóch linijkach można wywołać dowolne dodatkowe pliki za pomocą standardowej instrukcji import.

Zarządzanie sekretami:

Aby nie narażać na użycie niezbędnych danych uwierzytelniających podczas korzystania ze skryptów, które łączą się z naszym API lub innymi narzędziami, możliwe jest zdefiniowanie osobistych tajnych zmiennych, które można wywołać podczas uruchamiania skryptu i nie ryzykować ujawnienia ich innym użytkownikom podczas wdrażania poprzez przechowywanie ich w plikach skryptów.

Jak i gdzie je dodać

Sekrety można definiować w panelu Ustawienia w sekcji Sekrety użytkownika. Sekrety te mogą być ponownie wykorzystane w skrypcie do logowania się do portalu wymagań i systemów. Oto krótki film pokazujący, jak tworzyć sekrety użytkowników.

Jak sama nazwa wskazuje, sekrety te są unikalne dla każdego użytkownika i dostępne tylko dla tych, którzy je zdefiniowali.

Jak używać sekretów w skrypcie

Importując nazwę sekretu z modułu ".settings", użytkownicy mogą używać sekretów do uwierzytelniania w skryptach.

from .settings import USERNAME, PASSWORD #uwaga na wielkość liter, użyj tego samego słowa użytego w sekretach użytkownika.

LOGIN_DATA = {
    'domain': 'API_URL',
    'username': USERNAME,
    'password': PASSWORD
}

Jeśli pracujesz w portalu wymagań i systemów na Altium 365, nie możesz uzyskać dostępu do pozostałych interfejsów API za pomocą nazwy użytkownika i hasła. Musisz użyć "Tokenów użytkownika" w Ustawieniach, jak opisano tutaj.

W czasie wykonywania skrypty będą pobierać wartości tych zmiennych z sekretów zdefiniowanych w ustawieniach użytkownika, który uruchamia skrypt, i są one zależne od uprawnień tego użytkownika. Skrypty nie powinny zawierać żadnych funkcji wyjściowych tych zmiennych, aby nie narażać sekretów użytkownika.

Skrypty ogólnego użytku, które mają być uruchamiane za pomocą automatyzacji, można skonfigurować z uwierzytelnianiem przez użytkownika na poziomie administratora, który może usunąć uprawnienia do odczytu wszystkim innym użytkownikom, dzięki czemu skrypt pozostanie ukryty.

System kolejek

Dzięki systemowi kolejek użytkownicy mogą mieć pewność, że ich skrypty będą zawsze uruchamiane, zwłaszcza jeśli wstępnie zdefiniowane automatyzacje regularnie wyzwalają niestandardowe skrypty przepływu pracy. W tym celu należy przejść do sekcji "Runs". Można tam przejrzeć wszystkie uruchomienia wszystkich skryptów lub uruchomienia określonego skryptu.

Kolejka skryptów w akcji

Wszystkie przebiegi skryptów będą teraz zapisywane we wdrożeniu i można je przeglądać dla każdego skryptu lub dla wszystkich skryptów, wybierając opcję "Wszystkie skrypty" w górnej części drzewa modułu skryptów.

Uruchomiony skrypt można zatrzymać, klikając przycisk "Stop" w menu rozwijanym Akcje.

image-20250103-120600.pngAkcja zatrzymania skryptu.

Obsługa uprawnień

Skrypty mają własne uprawnienia, które można obsługiwać bezpośrednio z poziomu modułu skryptowego lub z poziomu modułu projektu w sekcji "Uprawnienia".

Ustawianie uprawnień użytkownika dla skryptu.

Uruchamianie skryptów z pulpitu nawigacyjnego

Użytkownicy mogą również tworzyć niestandardowe pulpity interakcji za pomocą przycisków "Uruchom skrypt". Są one podobne do wcześniej dostępnych przycisków Request używanych do wyzwalania wywołań REST, ale można je skonfigurować tak, aby uruchamiały pojedyncze lub wiele skryptów po naciśnięciu przycisku.

Korzystając z interfejsu API Python w wywoływanych skryptach, można skonfigurować niestandardowe pulpity interakcji, w których elementy takie jak standardowe pola tekstowe mogą być używane jako pola wejściowe i wyjściowe dla skryptu, który może następnie, bezpośrednio i pośrednio, wpływać na inne wyświetlane elementy.

W tym celu należy przejść do modułu Project i wybrać opcję "Dashboards". Następnie przejdź do niestandardowego pulpitu nawigacyjnego i kliknij ikonę Plus w prawym dolnym rogu. Następnie wybierz opcję "Uruchom skrypt" z listy rozwijanej "Akcje".

Tworzenie przycisku akcji "Uruchom skrypty" na pulpicie nawigacyjnym.

Tworzy to przycisk, za pomocą którego można uruchamiać skrypty aktualizujące określone bloki pulpitu nawigacyjnego.

Interesującym przypadkiem użycia jest sytuacja, w której zaliczone i nieudane testy są zliczane i wyświetlane w bloku tekstowym na tym samym pulpicie nawigacyjnym.

przycisk "Uruchom skrypt" na pulpicie nawigacyjnym do zliczania statusu testów.

Skrypt i automatyzacja

Wstępnie ustawione automatyzacje mogą wyzwalać skrypty. Na przykład, złożone obliczenia mogą być uruchamiane automatycznie, jeśli ich zdefiniowane dane wejściowe zostaną zmienione. Dodatkowo, korzystając z interfejsu API Python portalu wymagań i systemów, można również zaprogramować złożone zachowanie na zamówienie w celu zbudowania niestandardowych przepływów pracy.

Automatyzacje nie tylko uruchamiają skrypty, ale także przekazują informacje o tym, które obiekty je uruchomiły, dzięki czemu skrypty mogą działać bezpośrednio na tych obiektach. Informacje o obiektach są udostępniane w zmiennej słownikowej "kwargs" pod kluczem "triggered_objects", jak w poniższym przykładzie:

object_data = kwargs['triggered_objects'][0]

Automatyzacje będą również uruchamiać skrypty, jeśli zostaną uruchomione przez użytkowników, którzy nie mają uprawnień do przeglądania tych skryptów, umożliwiając w ten sposób dostosowanie przepływu pracy i obliczenia przez użytkowników administracyjnych, przy jednoczesnym ograniczeniu dostępu do kodu bazowego, takiego jak zastrzeżone modele matematyczne i fizyczne.

Przykładowe skrypty przepływu pracy można znaleźć w folderze szablonów publicznego repozytorium valifn.

Niestandardowe obrazy Valifn

Użytkownicy on-prem mają dodatkową funkcję dostosowywania swojej instancji valifn do uruchamiania dowolnego pakietu Python, pod warunkiem, że ich sprzęt serwerowy jest w stanie to obsłużyć. Użytkownicy on-prem mają również możliwość zarządzania obrazem valifn, który ma być używany w czasie wykonywania skryptu.

Ustawianie obrazu valifn do użycia w skrypcie we wdrożeniu lokalnym.

Jak pokazano, opcja ta jest dostępna jako pole tekstowe w Ustawieniach ogólnych dla każdego skryptu.

Jak utworzyć obraz niestandardowy

Dalsze instrukcje dotyczące konfigurowania własnych obrazów valifn można znaleźć na stronach dokumentacji publicznego repozytorium:

Przykłady skryptów Python

Przydatne przykłady skryptów można znaleźć zarówno w przykładowym projekcie wdrożenia Valicopter 5000 (nowe wdrożenia), jak i w publicznym repozytorium Github ValiFn.

Przykłady te mogą być uruchamiane ręcznie lub za pomocą automatyzacji (wyłącznie w niektórych przypadkach) i mogą być używane w obecnej postaci lub modyfikowane przez użytkowników w celu wykonania dowolnego rodzaju niestandardowego zachowania.

Wiele z tych przykładów zostało stworzonych jako demonstracje możliwości modułu skryptowego i automatyzacji do tworzenia zautomatyzowanych przepływów pracy na zamówienie. Zachęcamy użytkowników do dostosowywania istniejących skryptów do swoich potrzeb i udostępniania wszelkich skryptów ogólnego przeznaczenia i ulepszeń w publicznym repozytorium ValiFn.

Ostrzeżenie o podejrzanych dzieciach (automatyzacja)

Racjonalne

Ten skrypt jest wyzwalany przez automatyzację, która musi być ustawiona na wyzwalanie przez zmianę istniejącego wymagania, ponieważ skrypt działa na właściwościach edytowanego wymagania. Jego obecnie zdefiniowanym działaniem jest umieszczenie dyskusji w każdym z jego elementów podrzędnych (jeśli takie posiada) z dostosowanym komunikatem dotyczącym statusu zmiany wymagania nadrzędnego.

Sugerowane dostosowanie

Innymi możliwymi działaniami może być utworzenie zadania lub dodanie edytowanego wymagania do przeglądu.

Bieżące działania

  • Sprawdza, czy wymaganie, które uruchomiło wstępnie ustawioną automatyzację, ma dzieci

  • Jeśli ma dzieci, publikuje dyskusję w każdym wymaganiu podrzędnym, wskazując, że rodzic został zaktualizowany.

  • Dyskusja zawiera tożsamość użytkownika, który edytował wymaganie, uruchamiając w ten sposób automatyzację.

Nowe zadanie (automatyzacja)

Racjonalne

Podczas tworzenia nowego bloku potencjalny klient wymagał, aby zadania były automatycznie tworzone i przypisywane do określonego użytkownika. W tym przykładzie wstępnie ustawiona automatyzacja wyzwalana przez utworzenie nowego Bloku utworzy nowe zadanie i przypisze do niego użytkownika. Idealnie było dodać obiekt wyzwalający jako dane wejściowe, ale to rozwiązanie nie zostało sfinalizowane.

Sugerowane dostosowanie

Użyj kwargs['triggered_objects'][0], aby wyodrębnić informacje o obiekcie, który uruchomił automatyzację i dodać je do pola wejściowego zadania.

Bieżące działania

  • Publikuje nowe zadanie przypisane do określonego użytkownika.

Statystyki wymagań

Racjonalne

Prosty przykład tego, jak można utworzyć bardziej spersonalizowany licznik z większą liczbą wartości statystycznych niż te dostarczane w domyślnych blokach dostępnych w Dashboardach i dokumentach analitycznych. Może być uruchamiany ręcznie lub ustawiony na uruchamianie z automatyzacji za każdym razem, gdy wymaganie jest tworzone, modyfikowane lub usuwane.

Sugerowane dostosowania

  1. Pobranie wyodrębnionych informacji o wymaganiach i wyprowadzenie z nich bardziej złożonych statystyk poprzez porównanie ich z wcześniej zaktualizowanymi wartościami. Każda wartość może wskazywać, o ile wzrosła/zmniejszyła się wyrażona w procentach.

  2. Porównanie statystyk wdrożenia poprzez indywidualne uruchomienie skryptu w każdym projekcie i dodanie specjalnej instancji, która pobiera statystyki z każdego projektu, wyświetlając je na pulpicie nawigacyjnym.

  3. Ustaw niestandardowe ostrzeżenie dla administratorów projektu, jeśli statystyki pokazują nagły spadek liczby wymagań, sygnalizując możliwą drastyczną zmianę w projekcie.

Bieżące działania

  • Tworzy ogólne statystyki wymagań dla pojedynczego projektu we wdrożeniu.

  • Poprawia wstępnie utworzone Valis z wynikami.

Generowanie specyfikacji

Racjonalne

Przykładowy skrypt demonstrujący możliwości interfejsu API Python w zakresie tworzenia w pełni zautomatyzowanych raportów. Chociaż główny skrypt jest również dostępny na stronie dokumentacji integracji, ta konkretna wersja została dostosowana do uruchamiania z modułu skryptowego wdrożenia.

Może on być uruchamiany przez automatyzację lub ręcznie.

Sugerowane dostosowania

  1. Utworzenie pełnego raportu poprzez dostosowanie bieżącego procesu pobierania wymagań w celu wyodrębnienia bloków i innych obiektów do wypełnienia w raporcie

  2. Dodanie innych konfigurowalnych pól, które mogą być pobierane z niestandardowych bloków tekstowych pulpitu nawigacyjnego, z których można je również wyzwalać.

  3. Zmiana końcowego pliku wyjściowego na PDF zamiast edytowalnego pliku Word.

Bieżące działania

Pulpit nawigacyjny testów

Rational

Liczniki Dashboard nie dogoniły jeszcze modułu Testing i nie ma jeszcze zautomatyzowanych liczników dla testów. Ten skrypt został opracowany jako dowód koncepcji niestandardowego licznika, który nie został jeszcze zaimplementowany. Początkowo miał być uruchamiany ręcznie za pomocą przycisku Run Script na pulpicie nawigacyjnym.

Sugerowane dostosowania

  1. Rozszerzenie statystyk testów, które są publikowane z powrotem na pulpitach nawigacyjnych.

  2. Jeśli test zakończy się sukcesem, należy opublikować jego wynik w połączonym zadaniu i zmienić jego stan na "Gotowe".

Bieżące działania

  • Zwraca ciąg znaków, umieszczony na predefiniowanych blokach tekstowych Dashboard, z obliczonymi statystykami przebiegu testu.

  • Może pobierać dane wejściowe z automatyzacji lub może być uruchamiany ręcznie.

AI-LocalizedAI-localized
If you find an issue, select the text/image and pressCtrl + Enterto send us your feedback.
Feature Availability

The features available to you depend on which Altium solution you have – Altium Develop, an edition of Altium Agile (Agile Teams or Agile Enterprise), or Altium Designer (on active term).

If you don’t see a discussed feature in your software, contact Altium Sales to find out more.

Content