Змест схаваць

cisco-Nexus-3000-Series-Low-Latency-Switches-лагатып

cisco Стварэнне карыстацкіх задач працоўнага працэсу

cisco-Creating-Custom-Workflow-Tasks-PRODUCT-IMAGE

Аб карыстальніцкіх уводах працоўнага працэсу

Cisco UCS Director Orchestrator прапануе спіс дакладна вызначаных тыпаў уводу для карыстацкіх задач. Cisco UCS Director таксама дазваляе ствараць індывідуальны ўвод працоўнага працэсу для карыстальніцкай задачы працоўнага працэсу. Вы можаце стварыць новы тып уводу шляхам кланавання і змены існуючага тыпу ўводу.

Перадумовы

Перш чым пісаць карыстальніцкія задачы, вы павінны выканаць наступныя перадумовы:

  • Cisco UCS Director усталяваны і працуе ў вашай сістэме. Для атрымання дадатковай інфармацыі аб тым, як усталяваць Cisco UCS Director, звярніцеся да Кіраўніцтва па ўстаноўцы і канфігурацыі Cisco UCS Director.
  • У вас ёсць лагін з правамі адміністратара. Вы павінны выкарыстоўваць гэты лагін, калі ствараеце і змяняеце ўласныя задачы.
  • Вы павінны мець дазвол на запіс CloupiaScript, каб напісаць карыстальніцкую задачу з дапамогай CloupiaScript.
  • Вы павінны мець дазвол на выкананне CloupiaScript, каб выканаць карыстальніцкую задачу, створаную з дапамогай CloupiaScript.

Стварэнне карыстальніцкага ўводу працоўнага працэсу

Вы можаце стварыць уласны ўвод для індывідуальнай задачы працоўнага працэсу. Увод адлюстроўваецца ў спісе тыпаў уводу, якія вы можаце супаставіць з уводамі карыстальніцкай задачы, калі вы ствараеце задачу карыстальніцкага працоўнага працэсу.

  • Крок 1 Выберыце Аркестроўка.
  • Крок 2 Націсніце Custom Workflow Inputs.
  • Крок 3 Націсніце Дадаць.
  • Крок 4 На экране Add CustomWorkflow Input запоўніце наступныя палі:
    • Імя карыстальніцкага тыпу ўводу—Унікальнае імя для карыстальніцкага тыпу ўводу.
    • Тып уводу—Праверце тып уводу і націсніце Выбраць. На аснове абранага ўводу з'яўляюцца іншыя палі. Напрыкладample, калі вы выбіраеце адрас электроннай пошты ў якасці тыпу ўводу, з'яўляецца спіс значэнняў (LOV). Выкарыстоўвайце новыя палі, каб абмежаваць значэнні карыстальніцкага ўводу.
  • Крок 5 Націсніце Адправіць.
  • Карыстальніцкі ўвод працоўнага працэсу дадаецца ў Cisco UCS Director і даступны ў спісе тыпаў уводу.
Карыстальніцкая праверка ўводу

Кліентам можа спатрэбіцца праверка ўваходных дадзеных працоўнага працэсу з дапамогай знешніх рэсурсаў. Нестандартна Cisco UCS Director не можа задаволіць патрэбы праверкі кожнага кліента. Каб запоўніць гэты прабел, Cisco UCS Director забяспечвае магчымасць праверкі любога ўводу падчас выканання з дапамогай прадастаўленага кліентам сцэнарыя. Скрыпт можа пазначаць памылкі ва ўводзе і можа патрабаваць правільны ўвод перад выкананнем запыту на службу. Сцэнар можа быць напісаны на любой мове, мае доступ да любога вонкавага рэсурсу і мае доступ да ўсіх значэнняў уводу працоўнага працэсу.
Вы можаце напісаць уласныя скрыпты праверкі, выкарыстоўваючы JavaScript, Python, скрыпт абалонкі bash або любую іншую мову сцэнарыяў.

Наступны выпрampскрыпты праверкі можна знайсці ў Cisco UCS Director у раздзеле Аркестрацыя > Карыстальніцкія ўводы працоўнага працэсу:

  • Example-bash-скрыпт-валідатар
  • Example-javascript-валідатар
  • Example-python-валідатар

Вы можаце скапіяваць або кланаваць эксample сцэнарныя ўваходы працоўнага працэсу для стварэння новага праверанага ўваходу. Вы таксама можаце выкарыстоўваць эксample сцэнарныя ўводы працоўнага працэсу ў якасці кіраўніцтва для распрацоўкі ўласных сцэнарыяў.

Незалежна ад мовы сцэнарыяў, наступныя функцыі і правілы прымяняюцца да праверкі карыстальніцкага ўводу па сцэнарыі:

  • Уся праверка па сцэнарыю выконваецца ў асобным працэсе, так што няўдалы працэс праверкі не ўплывае на працэс Cisco UCS Director.
  • Толькі агульныя тэкставыя ўводы могуць быць правераны з дапамогай сцэнарыяў.
  • Сцэнарыі праверкі выконваюцца па чарзе, паслядоўна, у тым жа парадку, у якім з'яўляюцца ўводы на старонцы ўводаў працоўнага працэсу. Для кожнага праверанага ўводу запускаецца асобны працэс.
  • Ненулявое значэнне, якое вяртае скрыпт, паказвае на няўдалую праверку. Пры жаданні вы можаце перадаць паведамленне пра памылку назад у форму ўводу працоўнага працэсу.
  • Усе ўваходныя дадзеныя працоўнага працэсу перадаюцца ў скрыпт праверкі двума спосабамі:
    • У якасці аргументаў скрыпту ў форме “ключ”=”значэнне”.
    • Як зменныя асяроддзя для працэсу сцэнара. Імёны зменных з'яўляюцца ўваходнымі пазнакамі.
      Напрыкладampнапрыклад, калі працоўны працэс мае ўвод, пазначаны як Код прадукту, а ўваходнае значэнне роўна AbC123, зменная перадаецца ў скрыпт валідатара як «Код прадукту» = «AbC123».
      Гэтыя ўваходныя зменныя могуць быць выкарыстаны скрыптам, калі гэта неабходна для рэалізацыі праверкі. Выключэнне: значэнні табліцы ўтрымліваюць толькі нумар радка выбару табліцы і таму, верагодна, бескарысныя.
  • Старонка «Рэдагаваць карыстальніцкі ўвод працоўнага працэсу» робіць скрыпт даступным у рэдактары карыстальніцкіх задач. Сінтаксіс вылучаны для ўсіх моў. Сінтаксічныя памылкі правяраюцца толькі для валідатараў JavaScript.
Кланаванне карыстальніцкага ўводу працоўнага працэсу

Вы можаце выкарыстоўваць існуючы карыстальніцкі ўвод працоўнага працэсу ў Cisco UCS Director, каб стварыць карыстальніцкі ўвод працоўнага працэсу.

Перш чым пачаць
Карыстальніцкі ўвод працоўнага працэсу павінен быць даступны ў Cisco UCS Director.

  • Крок 1 Выберыце Аркестроўка.
  • Крок 2 Націсніце Custom Workflow Inputs.
  • Крок 3 Пстрыкніце радок з уводам карыстальніцкага працоўнага працэсу, які трэба кланаваць.
    Значок "Кланаваць" з'явіцца ўверсе табліцы ўваходных дадзеных карыстальніцкага працоўнага працэсу.
  • Крок 4 Націсніце Кланаваць.
  • Крок 5 Увядзіце назву карыстальніцкага тыпу ўводу.
  • Крок 6 Выкарыстоўвайце іншыя элементы кіравання на экране Clone Custom Workflow Input, каб наладзіць новы ўвод.
  • Крок 7 Націсніце «Адправіць».
    Увод задачы карыстальніцкага працоўнага працэсу клануецца пасля пацверджання і даступны для выкарыстання ў задачы карыстальніцкага працоўнага працэсу.
Стварэнне індывідуальнага задання

Каб стварыць карыстацкую задачу, зрабіце наступнае:

  • Крок 1 Выберыце Аркестроўка.
  • Крок 2 Націсніце Custom Workflow Tasks.
  • Крок 3 Націсніце Дадаць.
  • Крок 4 На экране Add Custom Workflow Task запоўніце наступныя палі:
    • Поле «Назва задачы» — унікальнае імя для карыстальніцкай задачы працоўнага працэсу.
    • Поле меткі задачы — метка для ідэнтыфікацыі задачы карыстальніцкага працоўнага працэсу.
    • Зарэгістравацца ў полі Катэгорыя — катэгорыя працоўнага працэсу, у якой неабходна зарэгістраваць задачу карыстальніцкага працоўнага працэсу.
    • Сцяжок «Актываваць задачу» — калі пазначана, карыстальніцкая задача працоўнага працэсу рэгіструецца ў Orchestrator і адразу ж можа выкарыстоўвацца ў працоўных працэсах.
    • Поле «Кароткае апісанне» — апісанне карыстальніцкай задачы працоўнага працэсу.
    • Поле «Падрабязнае апісанне» — падрабязнае апісанне задачы карыстальніцкага працоўнага працэсу.
  • Крок 5 Націсніце «Далей».
    З'явіцца экран уводу карыстацкіх задач.
  • Крок 6 Націсніце Дадаць.
  • Крок 7 На экране Add Entry to Inputs запоўніце наступныя палі:
    • Поле назвы поля ўводу—Унікальнае імя для поля. Імя павінна пачынацца з алфавітнага літары і не павінна ўтрымліваць прабелаў або спецыяльных сімвалаў.
    • Поле этыкеткі поля ўводу — этыкетка для ідэнтыфікацыі поля ўводу.
    • Выпадальны спіс "Тып поля ўводу"—Выберыце тып даных для ўваходнага параметра.
    • Адлюстраваць поле з тыпам уводу (без супастаўлення) — выберыце тып уводу, да якога гэта поле можа быць аднесена, калі гэта поле можа быць аднесена да вываду іншай задачы або ўводу глабальнага працоўнага працэсу.
    • Абавязковы сцяжок— Калі пазначаны, карыстальнік павінен увесці значэнне для гэтага поля.
    • Поле RBID—Увядзіце радок RBID для поля.
    • Выпадны спіс «Памер поля ўводу» — выберыце памер поля для тэксту і таблічнага ўводу.
    • Поле даведкі поля ўводу—(неабавязкова) Апісанне, якое паказваецца пры навядзенні курсора мышы на поле.
    • Поле анатацыі поля ўводу—(неабавязкова) тэкст падказкі для поля ўводу.
    • Поле «Імя групы палёў» — калі яно вызначана, усе палі з адпаведнымі імёнамі групы змяшчаюцца ў групу палёў.
    • Вобласць АТРЫБУТЫ ТЭКСТАВАГА ПОЛЯ—Запоўніце наступныя палі, калі тып поля ўводу — тэкст.
    • Сцяжок «Множны ўвод» — калі пазначана, поле ўводу прымае некалькі значэнняў у залежнасці ад тыпу поля ўводу:
    • Для LOV — поле ўводу прымае некалькі ўваходных значэнняў.
    • Для тэкставага поля — поле ўводу становіцца шматрадковым тэкставым полем.
    • Максімальная даўжыня поля ўводу — укажыце максімальную колькасць сімвалаў, якія можна ўвесці ў поле ўводу.
    • Вобласць АТРЫБУТЫЎ LOV—Запоўніце наступныя палі, калі тып уводу — Спіс значэнняў (LOV) або LOV з радыёкнопкамі.
    • Поле "Спіс значэнняў" — спіс значэнняў, падзеленых коскамі для ўбудаваных спісаў значэнняў.
      Поле «Назва пастаўшчыка LOV» — імя пастаўшчыка LOV для неўбудаваных LOV.
    • Вобласць АТРЫБУТАЎ ТАБЛІЦЫ — запоўніце наступныя палі, калі тып поля ўводу — Табліца, Усплываючая табліца або Табліца са сцяжком выбару.
    • Поле «Імя табліцы» — назва таблічнай справаздачы для тыпаў палёў табліцы.
    • Вобласць ПРАВЕРКІ ЎВОДНАГА ПОЛЯ—Адно або некалькі з наступных палёў адлюстроўваюцца ў залежнасці ад абранага тыпу даных. Запоўніце палі, каб вызначыць, як правяраюцца палі ўводу.
    • Выпадны спіс інструмента праверкі ўводу — выберыце сродак праверкі для ўводу карыстальнікам.
    • Поле рэгулярнага выразу — шаблон рэгулярнага выразу для супастаўлення ўваходнага значэння.
    • Поле паведамлення рэгулярнага выразу — паведамленне, якое адлюстроўваецца ў выпадку збою праверкі рэгулярнага выразу.
    • Поле мінімальнага значэння — мінімальнае лікавае значэнне.
    • Поле "Максімальнае значэнне" - максімальнае лікавае значэнне.
    • HIDE ON FIELD CONDITION вобласць—Запоўніце наступныя палі, каб усталяваць умову схавання поля ў форме.
    • Схаваць поле імя поля — унутранае імя поля, каб праграма, якая апрацоўвае форму, магла ідэнтыфікаваць поле.
    • Схаваць поле значэнняў поля — значэнне, якое трэба адправіць пасля адпраўкі формы.
    • Выпадальны спіс «Схаваць умовы поля» — выберыце ўмову, пры якой поле павінна быць схавана.
    • Поле даведкі HTML—інструкцыі даведкі для схаванага поля.
  • Крок 8 Націсніце «Адправіць».
    Уваходны запіс дадаецца ў табліцу.
  • Крок 9 Націсніце «Дадаць», каб дадаць больш запісаў да ўводаў.
  • Крок 10 Калі вы скончыце дадаваць уводы, націсніце "Далей".
    З'явіцца экран Выхады задач карыстальніцкага працоўнага працэсу.
  • Крок 11 Націсніце Дадаць.
  • Крок 12 На экране Add Entry to Outputs запоўніце наступныя палі:
    • Поле «Імя поля вываду» — унікальнае імя для поля вываду. Ён павінен пачынацца з літары і не павінен утрымліваць прабелы або спецыяльныя сімвалы.
    • Output Field Description field — Апісанне поля вываду.
    • Поле "Тып поля вываду"—Праверце тып вываду. Гэты тып вызначае, як выхад можа быць адлюстраваны на ўваходныя дадзеныя іншых задач.
  • Крок 13 Націсніце «Адправіць».
    Выхадны запіс дадаецца ў табліцу.
  • Крок 14 Націсніце «Дадаць», каб дадаць больш запісаў да выхадаў.
  • Крок 15 Націсніце «Далей».
    З'явіцца экран кантролера
  • Крок 16 (Неабавязкова) Націсніце "Дадаць", каб дадаць кантролер.
  • Крок 17 На экране «Дадаць запіс у кантролер» запоўніце наступныя палі:
    • Выпадальны спіс метадаў — выберыце метад маршалінга або дэмаршалінга, каб наладзіць ўваходы і/або выхады для карыстальніцкай задачы працоўнага працэсу. Метад можа быць адным з наступных:
    • Перад Маршалам — выкарыстоўвайце гэты метад, каб дадаць або ўсталяваць поле ўводу і дынамічна стварыць і ўсталяваць LOV на старонцы (форме).
    • Пасля Маршала — выкарыстоўвайце гэты метад, каб схаваць або паказаць поле ўводу.
    • Перад Unmarshall — выкарыстоўвайце гэты метад для пераўтварэння ўваходнага значэння з адной формы ў іншую — напрыкладample, калі вы хочаце зашыфраваць пароль перад адпраўкай яго ў базу дадзеных.
    • Пасля Unmarshall — выкарыстоўвайце гэты метад для праверкі ўводу карыстальніка і ўсталявання паведамлення пра памылку на старонцы.
      Глampль: Выкарыстанне кантролераў, на старонцы 14.
    • Вобласць тэксту сцэнарыя — для метаду, які вы абралі з выпадальнага спісу Метад, дадайце код для сцэнарыя налады графічнага інтэрфейсу.
      Заўвага Націсніце «Дадаць», калі хочаце дадаць код для іншых метадаў.
      Калі ёсць якія-небудзь праверкі для ўведзеных пароляў, пераканайцеся, што вы змянілі праверку кантролера для пароляў, каб вы маглі рэдагаваць карыстальніцкія задачы ў працоўных працэсах.
      Заўвага
  • Крок 18 Націсніце «Адправіць».
    Кантролер дададзены ў табліцу.
  • Крок 19 Націсніце «Далей».
    З'явіцца экран сцэнарыя.
  • Крок 20 У выпадальным спісе «Мова выканання» абярыце мову.
  • Крок 21 У полі «Сцэнар» увядзіце код CloupiaScript для карыстальніцкай задачы працоўнага працэсу.
    Код сцэнарыя Cloupia правяраецца пры ўводзе кода. Калі ў кодзе ёсць памылка, побач з нумарам радка адлюстроўваецца значок памылкі (чырвоны крыжык). Навядзіце курсор мышы на значок памылкі, каб view паведамленне пра памылку і рашэнне
  • Крок 22 Націсніце «Захаваць сцэнар».
  • Крок 23 Націсніце «Адправіць».
    Карыстальніцкая задача працоўнага працэсу створана і даступная для выкарыстання ў працоўным працэсе

Карыстальніцкія задачы і рэпазітары

Калі вы ствараеце карыстальніцкую задачу, вы можаце імпартаваць код з file захоўваюцца ў рэпазітары GitHub або BitBucket. Каб зрабіць гэта, вы:

  1. Стварыце адзін або некалькі тэкстаў files у сховішчы GitHub або BitBucket, альбо на github.com, альбо ў рэпазітары GitHub прыватнага прадпрыемства.
    Заўвага Cisco UCS Director падтрымлівае толькі GitHub (github.com або карпаратыўны асобнік GitHub) і/або BitBucket. Ён не падтрымлівае іншыя паслугі хостынгу Git, уключаючы GitLab, Perforce або Codebase.
  2. Зарэгіструйце рэпазітар у Cisco UCS Director. Глядзіце раздзел «Даданне рэпазітара GitHub або BitBucket у Cisco UCS Director» на старонцы 7.
  3. Выберыце сховішча і ўкажыце тэкст file які змяшчае карыстальніцкі скрыпт задачы. Глядзіце Загрузка карыстальніцкага кода сцэнарыя задачы з рэпазітара GitHub або BitBucket на старонцы 8.

Даданне рэпазітара GitHub або BitBucket у Cisco UCS Director
Каб зарэгістраваць рэпазітар GitHub або BitBucket у Cisco UCS Director, зрабіце наступнае:

Перш чым пачаць
Стварыце рэпазітар GitHub або BitBucket. Рэпазітар можа знаходзіцца на любым публічным або прыватным серверы GitHub або BitBucket, да якога можна атрымаць доступ з вашага Cisco UCS Director.
Адзначце адзін або некалькі fileякія змяшчаюць код JavaScript для вашых карыстальніцкіх задач у ваша сховішча.

  • Крок 1 Выберыце Адміністраванне > Інтэграцыя.
  • Крок 2 На старонцы "Інтэграцыя" націсніце "Кіраванне сховішчамі".
  • Крок 3 Націсніце Дадаць.
  • Крок 4 На старонцы «Дадаць рэпазітар» запоўніце абавязковыя палі, у тым ліку наступнае:
    • У полі «Псеўданім рэпазітара» увядзіце назву для ідэнтыфікацыі рэпазітара ў Cisco UCS Director.
    • У сховішчы URL поле, увядзіце URL рэпазітара GitHub або BitBucket.
    • У полі «Назва філіяла» увядзіце назву філіяла рэпазітара, які вы хочаце выкарыстоўваць. Назва па змаўчанні - галоўная галіна.
    • У полі «Карыстальнік сховішча» увядзіце імя карыстальніка для вашага ўліковага запісу GitHub або BitBucket.
    • Каб дадаць рэпазітар GitHub, увядзіце ў поле Password/API Token згенераваны API-токен для вашага GitHub.
      Каб згенераваць токен API з дапамогай GitHub, націсніце «Настройкі» і перайдзіце да «Настройкі распрацоўшчыка» > «Асабістыя токены доступу» і націсніце «Стварыць новы токен».
      Каб дадаць рэпазітар BitBucket, у полі Password/API Token увядзіце пароль для вашага BitBucket.
    • Каб выкарыстоўваць гэтае сховішча па змаўчанні, калі вы ствараеце новую карыстальніцкую задачу, адзначце Зрабіць гэта сховішчам па змаўчанні.
    • Каб праверыць, ці можа Cisco UCS Director атрымаць доступ да сховішча, націсніце Праверыць падключэнне.
      Стан злучэння з рэпазіторыем адлюстроўваецца ў банеры ўверсе старонкі.
      Калі вы не можаце падключыцца і звязацца з рэпазітарам GitHub або BitBucket ад Cisco UCS
      Дырэктар, абнавіце Cisco UCS Director для доступу ў Інтэрнэт праз проксі-сервер. Глядзіце кіраўніцтва па адміністраванні Cisco UCS Director.
      Заўвага
  • Крок 5 Калі вы пераканаецеся, што інфармацыя пра рэпазітар правільная, націсніце «Адправіць».

Загрузка карыстацкага кода сцэнарыя задачы з рэпазітара GitHub або BitBucket

Каб стварыць новую карыстальніцкую задачу шляхам імпарту тэксту з рэпазітара GitHub або BitBucket, зрабіце наступнае:

Перш чым пачаць
Стварыце сховішча GitHub або BitBucket і ўвядзіце адзін ці некалькі тэкстаў files, які змяшчае код JavaScript для вашых карыстальніцкіх задач у вашым сховішчы.

Дадайце рэпазітар GitHub у Cisco UCS Director. Глядзіце даданне рэпазітара GitHub або BitBucket у Cisco UCS Director на старонцы

  • Крок 1 На старонцы Orchestration націсніце Custom Workflow Tasks.
  • Крок 2 Націсніце Дадаць.
  • Крок 3 Запоўніце неабходныя палі на старонцы з інфармацыяй аб карыстальніцкай задачы. Глядзіце Стварэнне ўласнага задання на старонцы 3.
  • Крок 4 Запоўніце неабходныя палі на старонцы Карыстальніцкія ўводы задач. Глядзіце Стварэнне ўласнага задання на старонцы 3.
  • Крок 5 Запоўніце неабходныя палі на старонцы Выхады карыстальніцкай задачы. Глядзіце Стварэнне ўласнага задання на старонцы 3.
  • Крок 6 Запоўніце неабходныя палі на старонцы Кантролер. Глядзіце Стварэнне ўласнага задання на старонцы 3.
  • Крок 7 На старонцы "Скрыпт" запоўніце неабходныя палі:
    • У выпадальным спісе «Мова выканання» выберыце «JavaScript».
    • Адзначце Выкарыстоўваць рэпазітар для сцэнарыяў, каб уключыць карыстальніцкую задачу для выкарыстання сцэнарыя file з рэпазітара. Гэта дазваляе выбраць рэпазітар і ўказаць сцэнар file выкарыстоўваць.
    • З выпадальнага спісу Select Repository выберыце GitHub або BitBucket рэпазітар, які змяшчае скрыпт fileс. Для атрымання падрабязнай інфармацыі аб тым, як дадаць рэпазітары, гл. Даданне рэпазітара GitHub або BitBucket у Cisco UCS Director на старонцы 7.
    • Увядзіце поўны шлях да скрыпту file у Скрыпце fileтэкставае поле імя.
    • Каб спампаваць скрыпт, націсніце Загрузіць скрыпт.
      Тэкст з ст file капіюецца ў вобласць рэдагавання тэксту сцэнарыя.
    • Пры жаданні ўнясіце змены ў спампаваны скрыпт у вобласці рэдагавання тэксту скрыпта.
    • Каб захаваць сцэнарый у тым выглядзе, у якім ён з'явіўся ў вобласці рэдагавання тэксту сцэнарыя, націсніце "Захаваць сцэнарый".
      Калі вы націснеце «Захаваць сцэнар», сцэнар будзе захаваны ў вашым бягучым працоўным сеансе. Вы павінны націснуць «Адправіць», каб захаваць сцэнар у карыстальніцкай задачы, якую вы рэдагуеце.
      Заўвага
  • Крок 8 Каб захаваць заказную задачу, націсніце «Адправіць».
    Калі вы ўнеслі змены ў спампаваны сцэнарый у вобласці рэдагавання тэксту сцэнарыя, змены захаваюцца ў карыстальніцкай задачы. Ніякія змены не захоўваюцца ў рэпазітары GitHub або BitBucket. Калі вы жадаеце адкінуць загружаны скрыпт і ўвесці свой уласны скрыпт, націсніце Адхіліць скрыпт, каб ачысціць акно скрыпта.

Што рабіць далей
Вы можаце выкарыстоўваць новую карыстальніцкую задачу ў працоўным працэсе.

Імпарт працоўных працэсаў, карыстальніцкіх задач, модуляў сцэнарыяў і дзеянняў

Каб імпартаваць артэфакты ў Cisco UCS Director, зрабіце наступнае:

Заўвага Глабальныя зменныя, звязаныя з працоўным працэсам, будуць імпартаваны падчас імпарту працоўнага працэсу, калі глабальная зменная недаступная ў прыладзе.

  • Крок 1 Выберыце Аркестроўка.
  • Крок 2 На старонцы Orchestration націсніце Workflows.
  • Крок 3 Націсніце Імпарт.
  • Крок 4 На экране "Імпарт" націсніце "Выбраць a". File.
  • Крок 5 На выбар File на экране загрузкі выберыце file быць імпартаваным. Імпарт і экспарт Cisco UCS Director fileмае .wfdx file пашырэнне.
  • Крок 6 Націсніце «Адкрыць».
    Калі file загружаецца, File Адлюструецца экран загрузкі/праверкі File гатовы да выкарыстання і ключ.
  • Крок 7 Увядзіце ключ, які быў уведзены пры экспарце file.
  • Крок 8 Націсніце «Далей».
    Экран "Палітыкі імпарту" адлюстроўвае спіс аб'ектаў Cisco UCS Director, якія змяшчаюцца ў загружаным файле file.
  • Крок 9 (Неабавязкова) На экране "Палітыкі імпарту" вызначце спосаб апрацоўкі аб'ектаў, калі яны паўтараюць імёны, якія ўжо знаходзяцца ў тэчцы працоўнага працэсу. На экране імпарту запоўніце наступныя палі
Імя Апісанне
Працоўныя працэсы Выберыце адзін з наступных варыянтаў, каб вызначыць, як апрацоўваюцца працоўныя працэсы з аднолькавымі назвамі:
  • Замяніць— Замяніць існуючы працоўны працэс на імпартаваны працоўны працэс.
  • Захоўвайце абодва—Імпартаваць працоўны працэс як новую версію.
  • Прапусціць— Не імпартуйце працоўны працэс.
Карыстальніцкія задачы Выберыце адзін з наступных варыянтаў, каб вызначыць, як апрацоўваюцца карыстальніцкія задачы з аднолькавымі назвамі:
  • Замяніць
  • Захоўвайце абодва
  • Прапусціць
Імя Апісанне
Модулі скрыптаў Выберыце адзін з наступных параметраў, каб вызначыць, як апрацоўваюцца модулі сцэнарыяў з аднолькавымі назвамі:
  • Замяніць
  • Захоўвайце абодва
  • Прапусціць
Мерапрыемствы Выберыце адзін з наступных варыянтаў, каб вызначыць, як апрацоўваюцца дзеянні з аднолькавымі назвамі:
  • Замяніць
  • Захоўвайце абодва
  • Прапусціць
Імпарт працоўных працэсаў у тэчку Check Імпартаваць працоўныя працэсы ў тэчку, каб імпартаваць працоўныя працэсы. Калі вы не адзначыце Імпарт працоўных працэсаў у тэчку і калі няма існуючай версіі працоўнага цыклаw існуе, гэты працоўны працэс не імпартаваны.
Выберыце Папка Выберыце тэчку, у якую трэба імпартаваць працоўныя працэсы. Калі вы выбралі [Новы Папка..]

у выпадальным спісе, Новая тэчка з'явіцца поле.

Новая тэчка Увядзіце назву новай папкі, якую трэба стварыць у якасці папкі імпарту.
  • Крок 10 Націсніце Імпарт.

Экспарт працоўных працэсаў, карыстальніцкіх задач, модуляў сцэнарыяў і дзеянняў

Каб экспартаваць артэфакты з Cisco UCS Director, зрабіце наступнае:

Заўвага. Глабальныя зменныя, звязаныя з працоўным працэсам, будуць аўтаматычна экспартаваны падчас экспарту працоўнага працэсу.

  • Крок 1 Націсніце Экспарт.
  • Крок 2 На экране выбару працоўных працэсаў абярыце працоўныя працэсы, якія вы хочаце экспартаваць.
    Карыстальніцкія працоўныя працэсы, задачы і сцэнарыі, створаныя ў Cisco UCS Director да версіі 6.6, могуць не імпартавацца, калі яны ўтрымліваюць даныя XML.
    Заўвага
  • Крок 3 Націсніце «Далей».
  • Крок 4 На экране "Выбраць карыстальніцкія задачы" выберыце карыстальніцкія задачы, якія вы хочаце выставіць
    Заўвага. Экспартаваная карыстальніцкая задача змяшчае ўсе карыстальніцкія ўваходы, якія выкарыстоўваюцца гэтай карыстальніцкай задачай.
  • Крок 5 Націсніце «Далей».
  • Крок 6 На экране «Экспарт: выбар модуляў сцэнарыяў» абярыце модулі сцэнарыяў, якія вы хочаце экспартаваць.
  • Крок 7 Націсніце «Далей».
  • Крок 8 На экране "Экспарт: выбар дзеянняў" выберыце дзеянні, якія вы хочаце экспартаваць.
  • Крок 9 Націсніце «Далей».
  • Крок 10 На экране "Экспарт: выбар адкрытых API" абярыце API, якія вы хочаце экспартаваць.
  • Крок 11 На экране "Экспарт: пацверджанне" запоўніце наступныя палі:
Імя Апісанне
Экспартавана па Ваша імя або запіс аб тым, хто адказвае за экспарт.
Каментарыі Каментары да гэтага экспарту.
Зашыфраваць экспартаванае file Праверце Шыфраваць экспартаванае file сцяжок для шыфравання file на экспарт. Па змаўчанні сцяжок усталяваны.
ключ Увядзіце ключ для шыфравання file.

Гэта поле адлюстроўваецца толькі тады, калі зашыфраваць экспартаванае file сцяжок пазначаны.

Захавайце ключ, калі ён неабходны падчас імпарту працоўнага працэсу для дэшыфравання.

Ключ пацверджання Увядзіце ключ яшчэ раз для пацверджання.

Гэта поле адлюстроўваецца толькі тады, калі зашыфраваць экспартаванае file сцяжок пазначаны.

Экспартаваны File Імя Назва ст file у вашай лакальнай сістэме. Набярыце толькі базу fileімя; у file пашырэнне тыпу (.wfdx) дадаецца аўтаматычна.
  • Крок 12 Націсніце Экспарт.
    Вам будзе прапанавана захаваць file.
Кланіраванне карыстальніцкай задачы рабочага працэсу з бібліятэкі задач

Вы можаце кланаваць задачы ў бібліятэцы задач для выкарыстання пры стварэнні карыстальніцкіх задач. Вы таксама можаце кланаваць карыстацкую задачу, каб стварыць карыстальніцкую задачу.

Кланаваная задача - гэта структура з тымі ж уваходнымі і выхаднымі дадзенымі, што і зыходная задача. Аднак кланаваная задача - гэта толькі структура. Гэта азначае, што вы павінны напісаць усю функцыянальнасць для новай задачы ў CloupiaScript.

Заўважце таксама, што значэнні выбару для ўводу спісаў, такія як выпадальныя спісы і спісы значэнняў, пераносяцца ў кланаваную задачу, толькі калі значэнні спісу не залежаць ад сістэмы. Такія рэчы, як імёны і IP-адрасы існуючых сістэм, залежаць ад сістэмы; такія рэчы, як параметры канфігурацыі, якія падтрымліваюцца Cisco UCS Director, не з'яўляюцца. Напрыкладample, групы карыстальнікаў, імёны воблакаў і групы партоў залежаць ад сістэмы; ролі карыстальнікаў, тыпы воблака і тыпы груп партоў - не.

  • Крок 1 Выберыце Аркестроўка.
  • Крок 2 Націсніце Custom Workflow Tasks.
  • Крок 3 Націсніце «Кланаваць з бібліятэкі задач».
  • Крок 4 На экране "Кланаваць з бібліятэкі задач" адзначце радок з задачай, якую вы хочаце кланаваць.
  • Крок 5 Націсніце «Выбраць».
    Карыстальніцкая задача працоўнага працэсу ствараецца з бібліятэкі задач. Новае карыстальніцкае заданне - апошняе карыстальніцкае заданне ў справаздачы "Задачы карыстальніцкага працоўнага працэсу". Новае карыстальніцкае заданне названа ў гонар кланаванага задання з даданнем даты.
  • Крок 6 Націсніце «Адправіць».

Што рабіць далей
Адрэдагуйце карыстальніцкую задачу працоўнага працэсу, каб пераканацца, што належнае імя і апісанне на месцы для кланаванай задачы.

Кланаванне нестандартнай задачы працоўнага працэсу

Вы можаце выкарыстоўваць існуючую карыстальніцкую задачу працоўнага працэсу ў Cisco UCS Director, каб стварыць карыстальніцкую задачу працоўнага працэсу.

Перш чым пачаць
Карыстальніцкая задача працоўнага працэсу павінна быць даступная ў Cisco UCS Director.

  • Крок 1 Выберыце Аркестроўка.
  • Крок 2 Націсніце Custom Workflow Tasks.
  • Крок 3 Пстрыкніце радок з карыстальніцкай задачай працоўнага працэсу, якую вы жадаеце кланаваць.
    Значок "Кланаваць" з'явіцца ўверсе табліцы заданняў карыстальніцкага працоўнага працэсу.
  • Крок 4 Націсніце Кланаваць.
  • Крок 5 На экране Clone Custom Workflow Task абнавіце неабходныя палі.
  • Крок 6 Націсніце «Далей».
    З'явяцца ўводы, вызначаныя для карыстальніцкіх задач працоўнага працэсу.
  • Крок 7 Пстрыкніце радок з уводам задачы, які вы хочаце адрэдагаваць, і націсніце «Рэдагаваць», каб адрэдагаваць увод задачы.
  • Крок 8 Націсніце «Дадаць», каб дадаць запіс уводу задачы.
  • Крок 9 Націсніце «Далей».
    Адрэдагуйце вынікі задачы.
  • Крок 10 Націсніце «Дадаць», каб дадаць новы выхадны запіс.
  • Крок 11 Націсніце «Далей».
  • Крок 12 Адрэдагуйце скрыпты кантролера. Гл. Кіраванне ўводам заданняў карыстальніцкага працоўнага працэсу на старонцы 13.
  • Крок 13 Націсніце «Далей».
  • Крок 14 Каб наладзіць карыстацкую задачу, адрэдагуйце сцэнар задачы.
  • Крок 15 Націсніце «Адправіць».
Кантроль уводу задач карыстальніцкага працоўнага працэсу

Выкарыстанне кантролераў
Вы можаце змяніць знешні выгляд і паводзіны карыстальніцкіх уводаў задач з дапамогай інтэрфейсу кантролера, даступнага ў Cisco UCS Director.

Калі выкарыстоўваць кантролеры
Выкарыстоўвайце кантролеры ў наступных сітуацыях:

  • Для рэалізацыі складаных паводзін GUI паказваць і хаваць, уключаючы больш дакладнае кіраванне спісамі значэнняў, таблічнымі спісамі значэнняў і іншымі элементамі кіравання ўводам, якія адлюстроўваюцца карыстальніку.
  • Для рэалізацыі складанай логікі праверкі ўводу карыстальніка.

З дапамогай кантролераў уводу вы можаце рабіць наступнае:

  • Паказаць або схаваць элементы кіравання графічным інтэрфейсам: вы можаце дынамічна паказваць або хаваць розныя палі графічнага інтэрфейсу, такія як сцяжкі, тэкставыя палі, выпадальныя спісы і кнопкі, у залежнасці ад умоў. Напрыкладampнапрыклад, калі карыстальнік выбірае UCSM з выпадальнага спісу, вы можаце запытаць уліковыя даныя карыстальніка для Cisco UCS Manager або змяніць спіс значэнняў (LOV) у выпадальным спісе, каб паказваць толькі даступныя парты на серверы.
  • Праверка палёў формы: вы можаце праверыць дадзеныя, уведзеныя карыстальнікам пры стварэнні або рэдагаванні працоўных працэсаў у канструктары працоўных працэсаў. Для няправільных дадзеных, уведзеных карыстальнікам, могуць быць паказаны памылкі. Дадзеныя, якія ўводзяцца карыстальнікам, могуць быць зменены да таго, як яны будуць захаваны ў базе даных або да таго, як будуць захаваны на прыладзе.
  • Дынамічна атрымлівайце спіс значэнняў: вы можаце дынамічна атрымліваць спіс значэнняў з аб'ектаў Cisco UCS Director і выкарыстоўваць іх для запаўнення аб'ектаў формы GUI.

Маршалінг і дэмаршалінг аб'ектаў формы GUI
Кантролеры заўсёды звязаны з формай у інтэрфейсе ўводу задач Workflow Designer. Існуе адназначнае адлюстраванне паміж формай і кантролерам. Кантралёры працуюць у два сtages, маршалінг і дэмаршалінг. Абодва сtages ёсць два субtages, да і пасля. Каб выкарыстоўваць кантролер, вы маршалізуеце (кіраванне палямі формы карыстальніцкага інтэрфейсу) і/або адмяняеце маршалінг (праверка ўводу карыстальнікам) звязаных аб'ектаў формы графічнага інтэрфейсу з дапамогай сцэнарыяў кантролера.

Наступная табліца абагульняе гэтыя stagэс.

Stage Падсtage
Сартаванне — Выкарыстоўваецца для схавання і паказу палёў формы і для пашыранага кантролю LOV і таблічных LOV. перад Маршалам — Выкарыстоўваецца для дадання або ўстаноўкі поля ўводу і дынамічнага стварэння і ўстаноўкі LOV на старонцы (форме).

пасля Маршала — Выкарыстоўваецца, каб схаваць або паказаць поле ўводу.

Stage Падсtage
Дэмаршалінг – Выкарыстоўваецца для праверкі ўводу карыстальнікам формы. перад Унмаршалам — Выкарыстоўваецца для пераўтварэння ўваходнага значэння з адной формы ў іншую, напрыкладample, каб зашыфраваць пароль перад адпраўкай у базу дадзеных.

пасля Унмаршала — Выкарыстоўваецца для пацверджання ўводу карыстальніка і ўстаноўкі паведамлення пра памылку на старонцы.

Скрыпты кантролера зборкі
Для кантролераў не патрабуецца імпарт дадатковых пакетаў.
Вы не перадаеце параметры ў метады кантролера. Замест гэтага структура Cisco UCS Director робіць даступнымі наступныя параметры для выкарыстання ў маршалінгу і дэмаршалінгу:

Параметр Апісанне Example
старонка Старонка або форма, якая змяшчае ўсе ўваходныя дадзеныя задачы. Вы можаце выкарыстоўваць гэты параметр, каб зрабіць наступнае:
  • Атрымаць або задаць значэнні ўводу ў форме графічнага інтэрфейсу.
  • Паказваць або хаваць уводы ў форме GUI.
page.setHidden(id + “.portList”, праўда); page.setValue(id + “.status”, “Порт не працуе. Спіс партоў схаваны”);
id Унікальны ідэнтыфікатар поля ўводу формы. Ідэнтыфікатар ствараецца фрэймворкам і можа выкарыстоўвацца з назвай поля ўводу формы. page.setValue(id + “.status”, “Порт не працуе. Спіс партоў схаваны”);// тут 'статус' - гэта назва поля ўводу.
Поджо POJO (просты стары аб'ект Java) - гэта кампанент Java, які прадстаўляе форму ўводу. Кожная старонка GUI павінна мець адпаведны POJO, які змяшчае значэнні з формы. POJO выкарыстоўваецца для захавання значэнняў у базе дадзеных або для адпраўкі значэнняў на знешнюю прыладу. pojo.setLunSize(asciiValue); //задаць значэнне поля ўводу 'lunSize'

Глampль: Выкарыстанне кантролераў, на старонцы 14 для працоўнага кода sampфайл, які дэманструе функцыянальнасць кантролера.

Example: Выкарыстанне кантролераў

Наступны код напрыкладample дэманструе, як рэалізаваць функцыянальнасць кантролера ў карыстацкіх задачах працоўнага працэсу з дапамогай розных метадаў — да Marshall, пасля Marshall, да Unmarshall і пасля Unmarshall.
/*

Апісанне метадаў:
Перад Маршалам: выкарыстоўвайце гэты метад, каб дадаць або ўсталяваць поле ўводу і дынамічна стварыць і ўсталяваць LOV на старонцы (форме).
Пасля Маршала: выкарыстоўвайце гэты метад, каб схаваць або паказаць поле ўводу.
Перад UnMarshall: выкарыстоўвайце гэты метад для пераўтварэння ўваходнага значэння з адной формы ў іншую,
напрыкладample, калі вы хочаце зашыфраваць пароль перад адпраўкай у базу дадзеных. Пасля UnMarshall: выкарыстоўвайце гэты метад для праверкі ўводу карыстальніка і ўстаноўкі паведамлення пра памылку на
старонка.
*/
// Перад Маршалам:
/*
Выкарыстоўвайце метад beforeMarshall, калі ёсць змены ў полі ўводу або для дынамічнага стварэння LOV і ўсталявання новага поля ўводу ў форме перад яе загрузкай.
У эксampУнізе новае поле ўводу 'portList' дадаецца на старонку перад тым, як форма будзе адлюстравана ў браўзеры.
*/
importPackage(com.cloupia.model.cIM);
importPackage(java.util);
importPackage(java.lang);
var portList = новы ArrayList();
var lovLabel = “eth0”;
var lovValue = “eth0”;
var portListLOV = новы масіў();
portListLOV[0] = new FormLOVPair(lovLabel, lovValue);//стварыць поле ўводу lov
//параметр 'старонка' выкарыстоўваецца для ўстаноўкі поля ўводу ў форме
page.setEmbeddedLOVs(id + “.portList”, portListLOV);// усталяваць поле ўводу ў форме ============================ ===================================================== =================================
//Пасля Маршала:
/*
Выкарыстоўвайце гэты метад, каб схаваць або паказаць поле ўводу.
*/
page.setHidden(id + “.portList”, праўда); //схаваць поле ўводу 'portList'.
page.setValue(id + “.status”, “Порт не працуе. Спіс партоў схаваны”);
page.setEditable(id + “.status”, false);
===================================================== ===================================================== =========
//Перад Unmarshall:
/*
Выкарыстоўвайце метад beforeUnMarshall, каб прачытаць увод карыстальніка і пераўтварыць яго ў іншую форму перад устаўкай у базу дадзеных. Напрыкладample, вы можаце прачытаць пароль і захаваць пароль у базе дадзеных пасля пераўтварэння яго ў кадыроўку base64 або прачытаць імя супрацоўніка і пераўтварыць яго ў ідэнтыфікатар супрацоўніка, калі імя супрацоўніка адпраўляецца ў базу дадзеных.
У кодзе прample ніжэй памеру lun чытаецца і пераўтворыцца ў значэнне ASCII.
*/
importPackage(org.apache.log4j);
importPackage(java.lang);
importPackage(java.util);
var size = page.getValue(id + “.lunSize”);
var logger = Logger.getLogger(“мой рэгістратар”);
калі (памер! = нуль) {
logger.info(“Значэнне памеру”+памер);
if((new java.lang.String(size)).matches(“\\d+”)){ var byteValue = size.getBytes(“US-ASCII”); //пераўтварыць памер lun і атрымаць масіў знакаў ASCII

var asciiValueBuilder = новы StringBuilder();
for (var i = 0; i < byteValue.length; i++) {
asciiValueBuilder.append(byteValue[i]);
}
var asciiValue = asciiValueBuilder.toString()+” – Ascii
значэнне»
//id + “.lunSize” – ідэнтыфікатар поля ўводу
page.setValue(id + “.lunSize”,asciiValue); //параметр
'старонка' выкарыстоўваецца для ўстаноўкі значэння ў полі ўводу.
pojo.setLunSize(asciiValue); //усталяваць значэнне для pojo.
Гэта pojo будзе адпраўлена ў базу дадзеных або знешнюю прыладу
}
===================================================== ===================================================== =========
// Пасля unMarshall:
/*
Выкарыстоўвайце гэты метад для праверкі і ўстаноўкі паведамлення пра памылку.
*/
importPackage(org.apache.log4j);
importPackage(java.lang);
importPackage(java.util);
//зменны памер = pojo.getLunSize();
var size = page.get Value(id + “.lunSize”);
var logger = Logger .get Logger(“мой рэгістратар”);
logger.info(“Значэнне памеру”+памер);
if (size > 50) { //праверка памеру
старонка. set Error(id+.lunSize”, “Памер LUN не можа перавышаць 50 МБ “); //набор
паведамленне пра памылку на старонцы
page .set Page Message(“Памер LUN не можа перавышаць 50 МБ”);
//старонка. усталяваць статус старонкі (2);
}

Выкарыстанне вываду папярэдняй задачы ў працоўным працэсе

Вы можаце выкарыстоўваць вынікі папярэдняй задачы ў якасці ўваходных дадзеных для іншай задачы ў працоўным працэсе непасрэдна са сцэнарыя карыстальніцкай задачы і задачы Execute Cloupia Script бібліятэкі задач.
Каб атрымаць доступ да гэтага выхаду, вы можаце выкарыстоўваць адзін з наступных спосабаў:

  • Атрымайце зменную з кантэксту працоўнага працэсу з дапамогай метаду get Input().
  • Звярніцеся да вываду, выкарыстоўваючы запіс сістэмных зменных.

Каб атрымаць вывад з дапамогай кантэкстнага метаду getInput(), выкарыстоўвайце:
var name = ctxt.getInput(“PreviousTaskName.outputFieldName”);

Напрыкладampль:
var name = ctxt.getInput(“custom_task1_1684.NAME”); // NAME - гэта назва выхаду task1
поле, да якога вы хочаце атрымаць доступ
Каб атрымаць вывад з дапамогай запісу сістэмнай зменнай, выкарыстоўвайце:
var name = “${Назва папярэдняй задачы. Імя поля вываду}”;

Напрыкладampль:
var name = “${custom_task1_1684.NAME}”; // NAME - гэта імя поля вываду task1, да якога вы хочаце атрымаць доступ

Example: Стварэнне і запуск карыстальніцкай задачы

Каб стварыць карыстацкую задачу, зрабіце наступнае:

  • Крок 1 Выберыце Аркестроўка.
  • Крок 2 Націсніце Custom Workflow Tasks.
  • Крок 3 Націсніце «Дадаць» і ўвядзіце інфармацыю аб карыстальніцкай задачы.
  • Крок 4 Націсніце «Далей».
  • Крок 5 Націсніце + і дадайце дэталі ўводу.
  • Крок 6 Націсніце «Адправіць».
  • Крок 7 Націсніце «Далей».
    Адлюструецца экран Вывады карыстальніцкай задачы.
  • Крок 8 Націсніце + і дадайце дэталі вываду для карыстальніцкай задачы.
  • Крок 9 Націсніце «Далей».
    Адлюструецца экран кантролера.
  • Крок 10 Націсніце + і дадайце дэталі кантролера для карыстальніцкай задачы.
  • Крок 11 Націсніце «Далей».
    Адлюструецца экран сцэнарыя.
  • Крок 12 Выберыце JavaScript у якасці мовы выканання і ўвядзіце наступны скрыпт для выканання.
    logger.addInfo(“Прывітанне, свет!”);
    logger.addInfo(“Паведамленне”+input.message);
    дзе паведамленне - гэта імя поля ўводу.
  • Крок 13 Націсніце «Захаваць сцэнар».
  • Крок 14 Націсніце «Адправіць».
    Карыстальніцкая задача вызначана і дадаецца ў спіс карыстальніцкіх задач.
  • Крок 15 На старонцы Orchestration націсніце Workflows.
  • Крок 16 Націсніце «Дадаць», каб вызначыць працоўны працэс, а таксама вызначыць ўваходы і выхады працоўнага працэсу.
    Пасля таго, як ўваходы і выхады працоўнага працэсу вызначаны, выкарыстоўвайце канструктар працоўнага працэсу, каб дадаць задачу працоўнага працэсу ў працоўны працэс.
  • Крок 17 Двойчы пстрыкніце працоўны працэс, каб адкрыць працоўны працэс на экране Дызайнера працоўных працэсаў.
  • Крок 18 У левай частцы канструктара працоўных працэсаў разгарніце папкі і абярыце карыстацкую задачу (напрыклад,ample, «Карыстальніцкая задача Hello world»).
  • Крок 19 Перацягніце выбраную задачу ў канструктар працоўных працэсаў.
  • Крок 20 Запоўніце палі ў Дадаць заданне ( ) экран.
  • Крок 21 Падключыце задачу да працоўнага працэсу. Глядзіце кіраўніцтва Cisco UCS Director Orchstration.
  • Крок 22 Націсніце Праверыць працоўны працэс.
  • Крок 23 Націсніце «Выканаць зараз» і націсніце «Адправіць».
  • Крок 24 Глядзіце паведамленні часопіса ў акне часопіса запытаў на абслугоўванне.

Дакументы / Рэсурсы

cisco Стварэнне карыстацкіх задач працоўнага працэсу [pdfКіраўніцтва карыстальніка
Стварэнне карыстальніцкіх задач працоўнага працэсу, карыстальніцкія задачы працоўнага працэсу, стварэнне задач працоўнага працэсу, задачы працоўнага працэсу, задачы

Спасылкі

Пакінуць каментар

Ваш электронны адрас не будзе апублікаваны. Абавязковыя для запаўнення палі пазначаны *