Tällä kertaa käydään läpi aihe, johon olen törmännyt viime aikoina usein. Nimittäin epäselvyydet yhteysviitteiden (connection references) kanssa.

Yhteysviitteiden käyttämät yhteydet ovat käyttäjäkohtaisia. Tämä aiheuttaa nopeasti sekaannusta, mikäli samaa ratkaisua työstää useampi kuin yksi henkilö.

Käydään tämä läpi esimerkin avulla.

Ensimmäinen flow

Meillä on uusi ympäristö, johon luodaan ratkaisupaketti (Conn References Demo).

Ratkaisupaketin sisään tehdään uusi flow, joka käyttää Dataverseä.

Käytetyllä tunnuksella ei ole tässä ympäristössä vielä käytetty ratkaisupaketeissa Dataverseä, joten ensi töikseen alusta luo Dataverselle yhteysviitteen, sekä sen käyttämän yhteyden (connection).

Luotu yhteysviite näkyy Dataverse-toiminnon lisätiedoissa.

Toinen flow

Luodaan samaan ratkaisupakettiin toinen flow. Sekin käyttää Dataverseä. Mutta nyt Dataverse-toiminto käyttää oletuksena ensimmäisen flow’n yhteydessä luotua yhteysviitettä.

Tarkistetaan vielä.

Ratkaisupaketissamme on vain yksi yhteysviite.

Molemmat flow’t käyttävät sitä.

Kaikki menee hienosti, sillä flow’t tehtiin samalla tunnuksella. Dataverse-toimintoa lisätessä alusta tarkistaa onko tässä tai jossain toisessa tämän ympäristön ratkaisupaketissa olemassa yhteysviite, joka käyttää yhteyttä johon minulla on käyttöoikeus. Mikäli on, käytetään sitä. Mikäli ei ole, sellainen luodaan.

Kollega tekee muutoksia

Seuraavaksi kollegani tekee samaan ratkaisupakettiin muutoksia. Hän näkee ratkaisupaketissa sekä flow’t että juuri luodun yhteysviitten.

Mutta mitä tapahtuu hänen luodessa ratkaisupakettiin uuden flow’n?

Hänelle luodaan oma yhteysviite, sillä ympäristöstä ei löydy yhteysviitettä, jonka yhteyttä hän voi käyttää.

Vaikka työstämme yhteisiä resursseja saman ratkaisupaketin alla, ovat yhteydet henkilökohtaisia. Kollegani näkee uudessa flow’ssa ainoastaan oman yhteysviitteensä, joka käyttää hänen yhteyttään.

Lopputuloksena ratkaisupaketissa on kaksi Dataverseen liittyvää yhteysviitettä. Yksi per kehittäjä. Vaikka haluaisimme niitä olevan vain yhden. Emme halua luoda tuotantoympäristöön ylimääräisiä yhteysviitteitä, kun tämä paketti sinne aikanaan viedään.

Seuraavaksi kollegani käy muokkaamassa luomaani flow’ta. Hän lisää siihen uuden Dataverse-toiminnon. Se käyttää oletuksena alkuperäisen tekijän luomaa yhteysviitettä. Samaa mitä kaikki muutkin (Dataverse) toiminnot. Juuri kuten haluammekin.

Miten tämä on mahdollista? Yhteydethän olivat henkilökohtaisia?

Niin ovat. Mutta ne jaetaan flow’n sisällä niiden käyttäjien kesken, joilla on kyseiseen flow’hun muokkausoikeudet. Tämän vuoksi kollegani näkee minun yhteysviitteet minun luomissani flow’ssa, muttei itse luomassaan flow’ssa.

Selkeää?

Turhien yhteysviitteiden poistaminen

Miten saamme korjattua tilanteen? Haluamme vaihtaa kollegani tekemän flow’n käyttämään oikeaa yhteysviitettä.

Meillä on kaksi vaihtoehtoa.

Muokkaamme uutta flow’ta minun tunnuksellani. Haluamme käyttää minun yhteyttäni, joten ainoastaan minä voin käydä vaihtamassa flow’n käyttämään sitä.

Tämän jälkeen kollegani voi jatkaa ja käyttää minun yhteysviitettäni. Tässä nimenomaisessa flow’ssa.

Koska kollegani yhteysviite ei ole enää käytössä, voimme poistaa sen ympäristöstä kokonaan.

Toinen vaihtoehto on vaihtaa yhteysviite käyttämään kollegan yhteyttä. Tämän hän voi tietenkin tehdä itse.

Tämän jälkeen hän voi korjata flow’t käyttämään yhtä ja samaa yhteysviitettä.

Nyt tilanne on päinvastainen kuin alussa. Mikäli minä käyn luomassa uuden flow’n, en voi käyttää tätä yhteysviitettä siinä.

Kenen yhteyttä yhteysviite käyttää?

Tarkistetaan seuraavaksi kenen yhteyttä yhteysviitteessä käytetään.

Mikäki käytetty yhteys on minun, näen sen selkokielisenä yhteysviitteen tiedoista.

Kollegani taas näkee ainoastaan että yhteysviite käyttää jotain mystistä jaettua yhteyttä. Mutta kenen tunnusta siinä käytetään?

Kunhan selvittää, mikä flow kyseistä yhteysviitettä käyttää, niin selviää myös kenen yhteyttä siinä käytetään. Se näkyy heti yhteysviitteen perässä.

Seuraavaksi siirretään ratkaisu toiseen ympäristöön.

Ratkaisupaketin tuonti tuotantoympäristöön

Olemme siivonneet kehitysympäristömme turhista yhteysviitteistä. Tuodaan ratkaisu minun tunnuksillani tyhjään tuotantoympäristöön.

Kohdeympäristöön luodaan tuonnissa yhteysviitteen tarvitsema yhteys.

Lopputulos on kehitysympäristön kanssa identtinen. Yksi yhteysviite, joka käyttää minun yhteyttäni.

Kollega tuo ratkaisupaketin tuotantoympäristöön

Jatketaan kehitystä ja tehdään minun tunnuksillani neljäs työnkulku.

Kaikki hyvin. Yhteysviitteet ovat kehitysympäristössä nätisti ojennuksessa.

Seuraavan tuotantoonviennin tekee kuitenkin kollegani.

Hyvältä näyttää. Tuonnissa ei vaadita luomaan uusia yhteyksiä.

Tuonti onnistuu. Varoitus keroo että työnkulkuja on korvattu uusilla.

Havaitsemme kuitenkin ettei uusi flow (se neljäs) ole käynnissä. Mitä ihmettä?

Huomaamme yhteydessä olevan jotain vikaa, sillä sen kohdalla on punainen ikoni. Yritetään kuitenkin käynnistää flow.

Flow ei käynnisty, sillä se käyttää yhteyttä johon kollegallani ei ole oikeutta.

Kollegani tulisikin lopettaa tähän ja pyytää minua yhteyden omistajana käynnistämään flow.

Mutta kollegalla on kiire ja hän avaa flow’n muokkaustilaan. Josko sen kuitenkin saisi kuntoon.

Kas täältähän puuttuu yhteys. Jatketaan.

Kollega saa flow’n auki ja kaikki näyttää hyvältä.

Oikeasti vahinko kuitenkin tapahtui jo.

Tuotannossa olevaan ratkaisupakettiin syntyi juuri uusi yhteysviite. Uusi flow käyttää sitä. Vanhat flow’t käyttävät alkuperäistä.

Samalla myös yhteydet menivät sekaisin.

Olemme tuotantoympäristössä nyt samassa jamassa kuin hetki sitten kehitysympäristössä. Kollegani on täysin aseeton uuden flow’n suhteen. Hän ei voi vaihtaa sitä käyttämään oikeaa yhteysviitettä, koska hän ei näe sitä kyseisen flow’n kohdalla lainkaan.

Tilanteen voi korjata tuotantoympäristössä ainoastaan minun tunnuksellani.

Tuonti julkaisuputken (pipeline) avulla

Entä jos käytämme julkaisuputkea (Power Platform Pipeline). Mikä muuttuu?

Tuodaan minun tunnuksillani sama ratkaisupaketti testiympäristöön käyttäen julkaisuputkea. Paketissa on edelleen yksi yhteysviite, jolle tuonnin yhteydessä luodaan yhteys.

Jatketaan kehitystä ja luodaan kehitysympäristöön uusi flow.

Lopuksi kollegani vie uuden version testiin samalla julkaisuputkella.

Luonnollisesti lopputulos on sama. Uusi flow on pois päältä.

Kollega korjaa flow’n jälleen suoraan tuotannossa. Julkaisuputket käyttävät hallittuja ratkaisupaketteja, joten olemme tekemässä muutoksia hallitsemattomaan kerrokseen (unmanaged layer). Tässä kohtaa olisi syytä pakittaa.

Kollegani kuitenkin jatkaa ja korjaa flow’n.

Ja saa sen lopulta päälle.

Tällä kertaa uusi yhteysviite ei synny ratkaisupakettimme sisään

Se lymyilee ympäristön oletusratkaisussa (Default Solution).

Samalla kollega loi uudelle flow’lle ei-toivotun hallitsemattoman kerroksen.

Tilanteen korjaaminen on kuitenkin mahdollista. Tuodaan ratkaisupaketti uudelleen minun tunnuksillani. Näin flow’n asettuu käyttämään haluttua yhteysviitettä. Tämän jälkeen flow’sta voidaan poistaa ylimääräinen ratkaisukerros (se hallitsematon).

Kollegani voi lopuksi käydä poistamassa oletusratkaisusta sinne luodun yhteysviitteen.

Yhteenveto

Kuten esimerkistä näimme, on hyvin helppoa luoda uusia yhteyksiä ja yhteysviitteitä sekä ratkaisua muokattaessa, että sitä vietäessä toiseen ympäristöön. Mitä enemmän ratkaisuissa on yhteysviitteitä samalle tietolähteelle, sitä hankalampaa on varmistaa että kaikkialla käytetään oikeita yhteyksiä.

Muistetaan siis seuraavat.

  • Pidetään kehitysympäristössä yhteysviitteet ojennuksessa. Käydään tarvittaessa siistimässä niitä sillä tunnuksella, kenen yhteyksiä ne käyttävät.
  • Suoritetaan pakettien siirto seuraaviin ympäristöihin aina samalla tunnuksella