ゼロからビルドへ:ステップバイステップガイド

ใ“ใฎใƒˆใƒ”ใƒƒใ‚ฏใงใฏใ€Lino CLI ใ‚’ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆๆง‹็ฏ‰ใฎไธป่ฆใƒ„ใƒผใƒซใจใ—ใฆไฝฟ็”จใ™ใ‚‹ใŸใ‚ใฎๅฎŸ่ทต็š„ใชใ‚นใƒ†ใƒƒใƒ—ใƒใ‚คใ‚นใƒ†ใƒƒใƒ—ใ‚ฌใ‚คใƒ‰ใ‚’็ดนไป‹ใ—ใพใ™ใ€‚ใ‚คใƒณใ‚นใƒˆใƒผใƒซใจๅˆๆœŸ่จญๅฎšใ‹ใ‚‰ใ€ใ‚ตใƒผใƒ“ใ‚นใ€ใƒขใ‚ธใƒฅใƒผใƒซใ€ใ‚จใƒณใƒ†ใ‚ฃใƒ†ใ‚ฃใฎ็”Ÿๆˆใ€ใ•ใ‚‰ใซใ‚คใƒ™ใƒณใƒˆใ€ใƒใƒƒใ‚ฏใ‚ฐใƒฉใ‚ฆใƒณใƒ‰ใ‚ธใƒงใƒ–ใ€ใƒžใ‚คใ‚ฐใƒฌใƒผใ‚ทใƒงใƒณใ€Docker ใ‚คใƒกใƒผใ‚ธใฎใƒ“ใƒซใƒ‰ใ€ใƒใƒผใ‚ธใƒงใƒณ็ฎก็†ใชใฉใฎ้ซ˜ๅบฆใชๆฉŸ่ƒฝใพใง็ถฒ็พ…ใ—ใพใ™ใ€‚


็›ฎ็š„ใฏใ€CLI ใ‚ณใƒžใƒณใƒ‰ใŒๅฎŸ้š›ใฎ้–‹็™บใƒ•ใƒญใƒผใซใฉใฎใ‚ˆใ†ใซ็ต„ใฟ่พผใพใ‚Œใ‚‹ใ‹ใ‚’็ตฑๅˆ็š„ใซ็คบใ™ใ“ใจใงใ™ โ€” ๅ˜ใซใ‚ณใƒžใƒณใƒ‰ใ‚’ๅˆ—ๆŒ™ใ™ใ‚‹ใ ใ‘ใงใชใใ€ใใ‚Œใžใ‚Œใฎ้ธๆŠž็†็”ฑใ€่‡ชๅ‹•็”Ÿๆˆใ•ใ‚Œใ‚‹ๅ†…ๅฎนใ€ใ‚ขใƒผใ‚ญใƒ†ใ‚ฏใƒใƒฃไธŠใฎๅฝฑ้Ÿฟใ‚’่ชฌๆ˜Žใ—ใพใ™ใ€‚


ๅ„ใ‚ณใƒžใƒณใƒ‰ใซๅฐ‚็”จใฎใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆใŒใ‚ใ‚‹ๅ ดๅˆใงใ‚‚ใ€ใ“ใ“ใงใฏ ใ‚จใƒณใƒ‰ใƒ„ใƒผใ‚จใƒณใƒ‰ ใฎใƒ—ใƒญใ‚ปใ‚นใ‚’่ฆ‹ใ‚‹ใ“ใจใŒใงใใพใ™ โ€” ็นฐใ‚Š่ฟ”ใ—ไฝœๆฅญใฎๆ™‚้–“ใ‚’็ฏ€็ด„ใ—ใ€ไธ€่ฒซๆ€งใฎใ‚ใ‚‹ใƒ†ใ‚นใƒˆๅฏ่ƒฝใชใ‚ณใƒผใƒ‰ใ‚’็ถญๆŒใ™ใ‚‹ใŸใ‚ใฎๅ†็พๅฏ่ƒฝใชๆ‰‹้ †ใงใ™ใ€‚


ใ‚ฌใ‚คใƒ‰ๅ…จไฝ“ใ‚’้€šใ—ใฆใ€Lino ใŒ้ฉ็”จใ™ใ‚‹ๆŠ€่ก“็š„ๆฆ‚ๅฟต๏ผˆไพ‹๏ผšCQRSใ€TypedResultsใ€Source Generatorsใ€Outbox Pattern๏ผ‰ใ‚’่ชฌๆ˜Žใ—ใ€ใ‚ณใƒžใƒณใƒ‰ไพ‹ใ‚’็คบใ—ใ€ใƒใƒผใ‚ธใƒงใƒณ็ฎก็†ใ€ใƒ‡ใƒ—ใƒญใ‚คใ€็ถ™็ถš็š„ใ‚คใƒณใƒ†ใ‚ฐใƒฌใƒผใ‚ทใƒงใƒณใฎใƒ™ใ‚นใƒˆใƒ—ใƒฉใ‚ฏใƒ†ใ‚ฃใ‚นใ‚’ๆกˆๅ†…ใ—ใพใ™ใ€‚

Lino CLI ใฎใ‚คใƒณใ‚นใƒˆใƒผใƒซใจ่จญๅฎš

Lino CLI ใ‚’ไฝฟใ„ๅง‹ใ‚ใ‚‹ๆœ€ๅˆใฎใ‚นใƒ†ใƒƒใƒ—ใฏใ€้–‹็™บ็’ฐๅขƒใซใƒ„ใƒผใƒซใ‚’ใ‚คใƒณใ‚นใƒˆใƒผใƒซใ™ใ‚‹ใ“ใจใงใ™ใ€‚ ใ“ใ‚Œใฏ dotnet ใ‚ฐใƒญใƒผใƒใƒซใƒ„ใƒผใƒซ ใจใ—ใฆ้…ๅธƒใ•ใ‚ŒใฆใŠใ‚Šใ€ใ‚ณใƒณใƒ”ใƒฅใƒผใ‚ฟใƒผไธŠใฎใ™ในใฆใฎ .NET ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใงไฝฟ็”จๅฏ่ƒฝใงใ™ใ€‚

ใ‚นใƒ†ใƒƒใƒ— 1: ใ‚คใƒณใ‚นใƒˆใƒผใƒซ

Lino CLI ใ‚’ใ‚คใƒณใ‚นใƒˆใƒผใƒซ๏ผˆใพใŸใฏๆ›ดๆ–ฐ๏ผ‰ใ™ใ‚‹ใซใฏใ€ใ‚ฟใƒผใƒŸใƒŠใƒซใงไปฅไธ‹ใฎใ‚ณใƒžใƒณใƒ‰ใ‚’ๅฎŸ่กŒใ—ใฆใใ ใ•ใ„๏ผš

dotnet tool install --global Tolitech.Lino

้‡่ฆใชๆณจๆ„ไบ‹้ …:

  • ใ™ใงใซใƒใƒผใ‚ธใƒงใƒณใŒใ‚คใƒณใ‚นใƒˆใƒผใƒซใ•ใ‚Œใฆใ„ใ‚‹ๅ ดๅˆใฏใ€dotnet tool update --global Tolitech.Lino ใ‚’ไฝฟ็”จใ—ใฆๆ›ดๆ–ฐใงใใพใ™ใ€‚
  • lino ใ‚ณใƒžใƒณใƒ‰ใ‚’ๆญฃใ—ใๅ‹•ไฝœใ•ใ›ใ‚‹ใŸใ‚ใซใ€.NET ใฎใ‚ฐใƒญใƒผใƒใƒซใƒ„ใƒผใƒซใƒ‡ใ‚ฃใƒฌใ‚ฏใƒˆใƒชใŒใ‚ทใ‚นใƒ†ใƒ ใฎ PATH ใซๅซใพใ‚Œใฆใ„ใ‚‹ใ“ใจใ‚’็ขบ่ชใ—ใฆใใ ใ•ใ„ใ€‚

ใ‚นใƒ†ใƒƒใƒ— 2: ่จ€่ชž่จญๅฎš

ใ‚คใƒณใ‚นใƒˆใƒผใƒซๅพŒใ€CLI ใŒใƒกใƒƒใ‚ปใƒผใ‚ธใ€ใƒ—ใƒญใƒณใƒ—ใƒˆใ€ใƒญใ‚ฐใงไฝฟ็”จใ™ใ‚‹่จ€่ชž๏ผˆใพใŸใฏใ‚ซใƒซใƒใƒฃ๏ผ‰ใ‚’่จญๅฎšใ™ใ‚‹ใ“ใจใ‚’ๆŽจๅฅจใ—ใพใ™๏ผš

lino preferences culture set

ๅˆฉ็”จๅฏ่ƒฝใช่จ€่ชžใฎไธญใ‹ใ‚‰้ธๆŠžใ™ใ‚‹ใ‚ˆใ†ๆฑ‚ใ‚ใ‚‰ใ‚Œใพใ™ใ€‚ใ“ใฎ่จญๅฎšใซใ‚ˆใ‚Šใ€ใ™ในใฆใฎๆŒ‡็คบใ‚„ใƒ—ใƒญใƒณใƒ—ใƒˆใŒ้ธๆŠžใ—ใŸ่จ€่ชžใงไธ€่ฒซใ—ใฆ่กจ็คบใ•ใ‚Œใพใ™ใ€‚

ใ‚นใƒ†ใƒƒใƒ— 3: ่ช่จผใจ็™ป้Œฒ

้ซ˜ๅบฆใชใƒ†ใƒณใƒ—ใƒฌใƒผใƒˆใ€Docker ใ‚คใƒกใƒผใ‚ธใฎๅ…ฌ้–‹ใ€ๅค–้ƒจใ‚ตใƒผใƒ“ใ‚นใจใฎ็ตฑๅˆใชใฉใ€Lino ใฎใ™ในใฆใฎๆฉŸ่ƒฝใซใ‚ขใ‚ฏใ‚ปใ‚นใ™ใ‚‹ใซใฏ่ช่จผใŒๅฟ…่ฆใงใ™ใ€‚

- ใพใ ใ‚ขใ‚ซใ‚ฆใƒณใƒˆใ‚’ๆŒใฃใฆใ„ใชใ„ๅ ดๅˆใฏใ€ๆฌกใฎใ‚ณใƒžใƒณใƒ‰ใง็™ป้Œฒใ—ใฆใใ ใ•ใ„๏ผš

lino user register

- ใ™ใงใซใ‚ขใ‚ซใ‚ฆใƒณใƒˆใŒใ‚ใ‚‹ๅ ดๅˆใฏใ€ๆฌกใฎใ‚ณใƒžใƒณใƒ‰ใงใƒญใ‚ฐใ‚คใƒณใ—ใฆใใ ใ•ใ„๏ผš

lino auth login

ๅ‹•ไฝœๅ†…ๅฎน: CLI ใฏ่ช่จผใƒˆใƒผใ‚ฏใƒณใ‚’ใƒญใƒผใ‚ซใƒซใซไฟๅญ˜ใ—ใ€ไฟ่ญทใ•ใ‚ŒใŸใƒชใ‚ฝใƒผใ‚นใซใ‚ขใ‚ฏใ‚ปใ‚นใ™ใ‚‹ใ‚ณใƒžใƒณใƒ‰ใ‚’ๆฏŽๅ›žใƒญใ‚ฐใ‚คใƒณใ›ใšใซๅฎŸ่กŒใงใใ‚‹ใ‚ˆใ†ใซใ—ใพใ™ใ€‚

ใ‚นใƒ†ใƒƒใƒ— 4: ็ขบ่ช

ใ‚คใƒณใ‚นใƒˆใƒผใƒซใจ่ช่จผใŒๆˆๅŠŸใ—ใŸใ“ใจใ‚’็ขบ่ชใ™ใ‚‹ใซใฏใ€ๆฌกใ‚’ๅฎŸ่กŒใ—ใฆใใ ใ•ใ„๏ผš

lino --version

ใ‚ณใƒžใƒณใƒ‰ใŒใ‚คใƒณใ‚นใƒˆใƒผใƒซใ•ใ‚ŒใŸใƒใƒผใ‚ธใƒงใƒณใ‚’่ฟ”ใ—ใŸๅ ดๅˆใ€Lino CLI ใ‚’ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใงไฝฟ็”จใ™ใ‚‹ๆบ–ๅ‚™ใŒๆ•ดใฃใฆใ„ใพใ™ใ€‚

MyApp ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใฎไฝœๆˆ

ใ“ใฎใ‚นใƒ†ใƒƒใƒ—ใงใฏใ€Lino CLI ใ‚’ไฝฟ็”จใ—ใฆใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใฎๅˆๆœŸๆง‹้€ ใ‚’ไฝœๆˆใ—ใพใ™ใ€‚ ใ“ใฎใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใฏใ€ใ‚ตใƒผใƒ“ใ‚นใ€ใƒขใ‚ธใƒฅใƒผใƒซใ€ใƒ•ใƒญใƒณใƒˆใ‚จใƒณใƒ‰ใ€ใŠใ‚ˆใณใ‚คใƒ™ใƒณใƒˆ็ตฑๅˆใฎไฝœๆˆใ‚’็คบใ™ๅŸบ็›คใจใ—ใฆไฝฟ็”จใ•ใ‚Œใพใ™ใ€‚

ใ‚นใƒ†ใƒƒใƒ— 1: ไฝœๆˆใ‚ณใƒžใƒณใƒ‰ใฎๅฎŸ่กŒ

ๆ–ฐใ—ใ„ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใ‚’ไฝœๆˆใ™ใ‚‹ใซใฏใ€ใ‚ฟใƒผใƒŸใƒŠใƒซใงไปฅไธ‹ใฎใ‚ณใƒžใƒณใƒ‰ใ‚’ๅฎŸ่กŒใ—ใพใ™๏ผš

lino project new

CLI ใฏใ‚นใƒ†ใƒƒใƒ—ใ”ใจใซๆกˆๅ†…ใ—ใ€ๆฌกใฎๆƒ…ๅ ฑใ‚’ๆฑ‚ใ‚ใพใ™๏ผš

  • ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆๅ๏ผš ใ“ใ“ใงใฏ MyApp ใ‚’ไฝฟ็”จใ—ใพใ™ใŒใ€ไปปๆ„ใฎๅๅ‰ใ‚’้ธๆŠžๅฏ่ƒฝใงใ™๏ผ›
  • ่ฟฝๅŠ ๆฉŸ่ƒฝ๏ผš ใ‚ณใƒผใƒ‰่งฃๆžใƒ„ใƒผใƒซใ€ๅˆ†ๆ•ฃใ‚ญใƒฃใƒƒใ‚ทใƒฅใ€้žๅŒๆœŸใ‚คใƒ™ใƒณใƒˆๅฏพๅฟœใชใฉใ€‚

ใ‚นใƒ†ใƒƒใƒ— 2: ใ‚ณใ‚ขๆฉŸ่ƒฝใฎ่จญๅฎš

ใ“ใฎใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใงใฏใ€ๆฌกใฎๆฉŸ่ƒฝใ‚’ๆœ€ๅˆใ‹ใ‚‰ๆœ‰ๅŠนใซใ™ใ‚‹ใ“ใจใ‚’ๆŽจๅฅจใ—ใพใ™๏ผš

  • ใ‚ณใƒผใƒ‰่งฃๆžใƒ„ใƒผใƒซ๏ผš ใ‚ณใƒผใƒ‰ใŒใƒ™ใ‚นใƒˆใƒ—ใƒฉใ‚ฏใƒ†ใ‚ฃใ‚นใจไธ€่ฒซใ—ใŸๅŸบๆบ–ใซๅพ“ใฃใฆใ„ใ‚‹ใ“ใจใ‚’็ขบ่ชใ—ใ€ไธ€่ˆฌ็š„ใชๅฎŸ่ฃ…ใ‚จใƒฉใƒผใ‚’้˜ฒๆญข๏ผ›
  • ๅˆ†ๆ•ฃใ‚ญใƒฃใƒƒใ‚ทใƒฅ๏ผš ่ค‡ๆ•ฐใ‚ตใƒผใƒ“ใ‚นใฎใ‚ทใƒŠใƒชใ‚ชใงใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใฎใƒ‘ใƒ•ใ‚ฉใƒผใƒžใƒณใ‚นใ‚’ๅ‘ไธŠใ•ใ›ใ€ไธ่ฆใชใƒ‡ใƒผใ‚ฟใƒ™ใƒผใ‚นใ‚ขใ‚ฏใ‚ปใ‚นใ‚’้˜ฒๆญข๏ผ›
  • ้žๅŒๆœŸ้€šไฟก๏ผš ใ‚ตใƒผใƒ“ใ‚น้–“็ตฑๅˆใฎใŸใ‚ใซใ‚คใƒ™ใƒณใƒˆใจใ‚ญใƒฅใƒผใ‚’ๆœ‰ๅŠนใซใ—ใ€ๆ‹กๅผตๆ€งใจ็–Ž็ตๅˆใ‚’็ขบไฟใ€‚

ใ“ใฎใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใงใฏใ€ใ“ใ‚Œใ‚‰ใ™ในใฆใฎใ‚ชใƒ—ใ‚ทใƒงใƒณใ‚’ๆœ‰ๅŠนใซใ™ใ‚‹ใ“ใจใŒ้‡่ฆใงใ™ใ€‚่ค‡ๆ•ฐใฎใ‚ตใƒผใƒ“ใ‚นใŒ็ตฑๅˆใ‚คใƒ™ใƒณใƒˆใ‚’้€šใ˜ใฆ้€šไฟกใ™ใ‚‹ใŸใ‚ใงใ™ใ€‚ ใ“ใ‚Œใซใ‚ˆใ‚Šใ€Lino ใ‚’ไฝฟ็”จใ—ใฆใƒขใ‚ธใƒฅใƒผใƒซๅŒ–ใ•ใ‚ŒใŸๅˆ†ๆ•ฃใ‚ทใ‚นใƒ†ใƒ ใ‚’ๆง‹็ฏ‰ใ™ใ‚‹ๆ–นๆณ•ใ‚’็†่งฃใงใใพใ™ใ€‚

ใ‚นใƒ†ใƒƒใƒ— 3: ็”Ÿๆˆใ•ใ‚Œใ‚‹ๆง‹้€ 

ใ‚ณใƒžใƒณใƒ‰ใฎๅฎŸ่กŒใจๆฉŸ่ƒฝใฎ่จญๅฎšๅพŒใ€CLI ใฏใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใฎๅˆๆœŸๆง‹้€ ใ‚’็”Ÿๆˆใ—ใพใ™ใ€‚ๆง‹้€ ใซใฏไปฅไธ‹ใŒๅซใพใ‚Œใพใ™๏ผš

  • ใ‚ตใƒผใƒ“ใ‚นใŠใ‚ˆใณใƒขใ‚ธใƒฅใƒผใƒซใฎใƒ•ใ‚ฉใƒซใƒ€๏ผ›
  • ใƒ•ใƒญใƒณใƒˆใ‚จใƒณใƒ‰ใฎใƒ†ใƒณใƒ—ใƒฌใƒผใƒˆ๏ผˆ้ฉ็”จๅฏ่ƒฝใชๅ ดๅˆ๏ผ‰๏ผ›
  • ใ‚ญใƒฃใƒƒใ‚ทใƒฅใ€ใ‚คใƒ™ใƒณใƒˆใ€็ตฑๅˆใฎๅˆๆœŸ่จญๅฎš๏ผ›
  • ใ‚ณใƒณใƒ‘ใ‚คใƒซๅฏ่ƒฝใชใ‚ฝใƒชใƒฅใƒผใ‚ทใƒงใƒณใƒ•ใ‚กใ‚คใƒซ๏ผˆ.slnx๏ผ‰ใŠใ‚ˆใณใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใƒ•ใ‚กใ‚คใƒซ๏ผˆ.csproj๏ผ‰ใ€‚

ใ“ใ‚Œใง MyApp ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใฏใ€ๆฌกใฎใ‚นใƒ†ใƒƒใƒ—ใง่จญๅฎšใ™ใ‚‹ใ‚ตใƒผใƒ“ใ‚นใ€ใƒขใ‚ธใƒฅใƒผใƒซใ€ใ‚จใƒณใƒ†ใ‚ฃใƒ†ใ‚ฃใ€ใƒ•ใƒญใƒณใƒˆใ‚จใƒณใƒ‰ใ‚’ๅ—ใ‘ๅ…ฅใ‚Œใ‚‹ๆบ–ๅ‚™ใŒๆ•ดใ„ใพใ—ใŸใ€‚

ใƒ•ใƒญใƒณใƒˆใ‚จใƒณใƒ‰ใฎ่ฟฝๅŠ 

ใ“ใ“ใงใฏใ€ใ‚ทใ‚นใƒ†ใƒ ใฎใ‚คใƒณใ‚ฟใƒผใƒ•ใ‚งใƒผใ‚นใงใ‚ใ‚‹ใƒ•ใƒญใƒณใƒˆใ‚จใƒณใƒ‰ใ‚’ไฝœๆˆใ—ใพใ™ใ€‚ใ“ใ‚Œใฏ Backoffice ใจใ—ใฆไฝฟ็”จใ•ใ‚Œใพใ™ใ€‚ ใ“ใฎใƒ•ใƒญใƒณใƒˆใ‚จใƒณใƒ‰ใฏๅ…ฌ้–‹ใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใงใฏใชใใ€็ฎก็†่€…ใ‚„ใƒžใƒใƒผใ‚ธใƒฃใƒผใŒ่ฃฝๅ“ใ€ใ‚ซใƒ†ใ‚ดใƒชใ€ๅœจๅบซใ€่ฒฉๅฃฒใ€ใใฎไป–ใฎใ‚ทใ‚นใƒ†ใƒ ๆƒ…ๅ ฑใ‚’็ฎก็†ใ™ใ‚‹ใŸใ‚ใฎๅ†…้ƒจใƒ„ใƒผใƒซใงใ™ใ€‚

ใ‚นใƒ†ใƒƒใƒ— 1: ไฝœๆˆใ‚ณใƒžใƒณใƒ‰ใฎๅฎŸ่กŒ

ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใซๆ–ฐใ—ใ„ใƒ•ใƒญใƒณใƒˆใ‚จใƒณใƒ‰ใ‚’่ฟฝๅŠ ใ™ใ‚‹ใซใฏใ€ใ‚ฟใƒผใƒŸใƒŠใƒซใงๆฌกใฎใ‚ณใƒžใƒณใƒ‰ใ‚’ไฝฟ็”จใ—ใพใ™๏ผš

lino webapp new

ใƒ—ใƒญใ‚ปใ‚นไธญใซ CLI ใฏใ„ใใคใ‹ใฎๆƒ…ๅ ฑใ‚’ๆฑ‚ใ‚ใพใ™ใ€‚ไพ‹ใˆใฐ๏ผš

  • Web ใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณๅ๏ผšใ“ใฎไพ‹ใงใฏ Backoffice ใ‚’ไฝฟ็”จใ—ใพใ™๏ผ›

ใ‚นใƒ†ใƒƒใƒ— 2: ็”Ÿๆˆใ•ใ‚Œใ‚‹ๆง‹้€ 

ใƒ—ใƒญใ‚ปใ‚นใฎๆœ€ๅพŒใซใ€CLI ใฏ WebApps/Backoffice ใƒ•ใ‚ฉใƒซใƒ€ๅ†…ใซใƒ•ใƒญใƒณใƒˆใ‚จใƒณใƒ‰ใฎๅˆๆœŸๆง‹้€ ใ‚’็”Ÿๆˆใ—ใพใ™ใ€‚ ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใฎๆง‹้€ ใซใฏไปฅไธ‹ใŒๅซใพใ‚Œใพใ™๏ผš

  • ใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใฎใƒšใƒผใ‚ธใ€ใ‚ณใƒณใƒใƒผใƒใƒณใƒˆใ€ใ‚ตใƒผใƒ“ใ‚น็”จใฎใƒ•ใ‚ฉใƒซใƒ€๏ผ›
  • ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใ‚ตใƒผใƒ“ใ‚นใฎ API ใ‚’ๅˆฉ็”จใ™ใ‚‹ใŸใ‚ใฎ HTTP ใ‚ฏใƒฉใ‚คใ‚ขใƒณใƒˆ๏ผ›
  • ๅˆๆœŸใƒ†ใƒณใƒ—ใƒฌใƒผใƒˆ๏ผ›
  • ่ช่จผใ€่ชๅฏใ€ใ‚ทใ‚นใƒ†ใƒ ใ‚คใƒ™ใƒณใƒˆใจ็ตฑๅˆใ™ใ‚‹ใŸใ‚ใฎ่จญๅฎšใƒ•ใ‚กใ‚คใƒซใ€‚

้‡่ฆใชๆณจๆ„ไบ‹้ …

  • ใƒ•ใƒญใƒณใƒˆใ‚จใƒณใƒ‰ใฏ้ธๆŠžใ•ใ‚ŒใŸใ‚ตใƒผใƒ“ใ‚นใ‚„ใƒขใ‚ธใƒฅใƒผใƒซใซ่‡ชๅ‹•็š„ใซ็ตฑๅˆใ•ใ‚Œใ€Lino ใซใ‚ˆใฃใฆ็”Ÿๆˆใ•ใ‚ŒใŸ API ใ‚’ไป‹ใ—ใฆ่ฃฝๅ“ใ€ใ‚ซใƒ†ใ‚ดใƒชใ€่ฒฉๅฃฒใƒ‡ใƒผใ‚ฟใ‚’็›ดๆŽฅๅˆฉ็”จใงใใพใ™ใ€‚
  • ่ค‡ๆ•ฐใฎใƒ•ใƒญใƒณใƒˆใ‚จใƒณใƒ‰ใ‚’ไฝœๆˆใ™ใ‚‹ใ“ใจใ‚‚ๅฏ่ƒฝใงใ™ใ€‚ไพ‹ใˆใฐใ€็ฎก็†่€…็”จ๏ผˆBackoffice๏ผ‰ใจๅ…ฌ้–‹็”จ๏ผˆSite๏ผ‰ใฎ 2 ใคใ‚’ๅŒใ˜ใƒ—ใƒญใ‚ปใ‚นใงไฝœๆˆใงใใพใ™ใ€‚

ใƒ•ใƒญใƒณใƒˆใ‚จใƒณใƒ‰ใŒไฝœๆˆใ•ใ‚ŒใŸใฎใงใ€ใ“ใฎใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใซใƒ‡ใƒผใ‚ฟใจใƒ“ใ‚ธใƒใ‚นใƒซใƒผใƒซใ‚’ๆไพ›ใ™ใ‚‹ใ‚ตใƒผใƒ“ใ‚นใ‚„ใƒขใ‚ธใƒฅใƒผใƒซใฎไฝœๆˆใซ้€ฒใ‚€ๆบ–ๅ‚™ใŒๆ•ดใ„ใพใ—ใŸใ€‚

ใ‚ตใƒผใƒ“ใ‚นใจใƒขใ‚ธใƒฅใƒผใƒซใฎไฝœๆˆ

ใ“ใฎใ‚นใƒ†ใƒƒใƒ—ใงใฏใ€ใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใ‚’ๆง‹ๆˆใ™ใ‚‹ใ‚ตใƒผใƒ“ใ‚นใจใƒขใ‚ธใƒฅใƒผใƒซใ‚’ๆง‹็ฏ‰ใ—ใพใ™ใ€‚ ็›ฎ็š„ใฏใ€่ฃฝๅ“ใ€ใ‚ซใƒ†ใ‚ดใƒชใ€ๅœจๅบซใ€่ฒฉๅฃฒใ€ใƒกใƒ‡ใ‚ฃใ‚ขใชใฉใ€ใ‚ทใ‚นใƒ†ใƒ ใฎ็•ฐใชใ‚‹้ ˜ๅŸŸใŒ็‹ฌ็ซ‹ใ—ใฆ้€ฒๅŒ–ใงใใ‚‹ใƒขใ‚ธใƒฅใƒผใƒซๅŒ–ใ‹ใคใ‚นใ‚ฑใƒผใƒฉใƒ–ใƒซใชใ‚ขใƒผใ‚ญใƒ†ใ‚ฏใƒใƒฃใ‚’ไฝœๆˆใ—ใ€็ตๆŸๅŠ›ใ‚’็ถญๆŒใ—ใคใคไฟๅฎˆๆ€งใ‚’้ซ˜ใ‚ใ‚‹ใ“ใจใงใ™ใ€‚

ใ‚นใƒ†ใƒƒใƒ— 1: ใ‚ตใƒผใƒ“ใ‚นใฎๅฎš็พฉ

ใพใšใ€ไปฅไธ‹ใฎใ‚ตใƒผใƒ“ใ‚นใ‚’ไฝœๆˆใ—ใพใ™ใ€‚ๅ„ใ‚ตใƒผใƒ“ใ‚นใซใฏๆ˜Ž็ขบใช่ฒฌไปปใŒใ‚ใ‚Šใพใ™:

  • Catalog๏ผˆใƒขใ‚ธใƒฅใƒผใƒซๅž‹๏ผ‰โ€“ ่ฃฝๅ“ใ€ใ‚ซใƒ†ใ‚ดใƒชใ€ไพกๆ ผใฎ็ฎก็†;
  • Sales โ€“ ่ฒฉๅฃฒใŠใ‚ˆใณๆณจๆ–‡ใฎๅ‡ฆ็†;
  • Stock โ€“ ๅœจๅบซใŠใ‚ˆใณๅœจๅบซ็งปๅ‹•ใฎ็ฎก็†;
  • Security โ€“ ่ช่จผใ€่ชๅฏใ€ใŠใ‚ˆใณใƒฆใƒผใ‚ถใƒผ็ฎก็†ใ€‚

ๆ–ฐใ—ใ„ใ‚ตใƒผใƒ“ใ‚นใ‚’ไฝœๆˆใ™ใ‚‹ใซใฏใ€ไปฅไธ‹ใฎใ‚ณใƒžใƒณใƒ‰ใ‚’ๅฎŸ่กŒใ—ใพใ™:

lino service new

ใ‚ณใƒžใƒณใƒ‰ๅฎŸ่กŒไธญใ€CLI ใฏๆฌกใฎๆƒ…ๅ ฑใ‚’่ฆๆฑ‚ใ—ใพใ™:

  • ใ‚ตใƒผใƒ“ใ‚นๅ: ไพ‹: Catalog;
  • ใƒ‡ใƒผใ‚ฟใƒ™ใƒผใ‚น: ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใซๆœ€้ฉใชๆŠ€่ก“ใ‚’้ธๆŠž๏ผˆSQL Serverใ€PostgreSQL ใชใฉ๏ผ‰;

ใ‚นใƒ†ใƒƒใƒ— 2: ใ‚ตใƒผใƒ“ใ‚นๅ†…ใฎใƒขใ‚ธใƒฅใƒผใƒซไฝœๆˆ

ใ™ในใฆใฎใ‚ตใƒผใƒ“ใ‚นใŒใƒขใ‚ธใƒฅใƒผใƒซๅŒ–ใ•ใ‚Œใ‚‹ๅฟ…่ฆใฏใ‚ใ‚Šใพใ›ใ‚“ใ€‚็งใŸใกใฎใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใงใฏใ€Catalog ใ‚ตใƒผใƒ“ใ‚นใฎใฟใŒใƒขใ‚ธใƒฅใƒผใƒซใ‚’ๆŒใกใ€ใƒžใƒผใƒใƒฃใƒณใƒ€ใ‚คใ‚ธใƒณใ‚ฐใ‚„ไพกๆ ผ่จญๅฎšใชใฉใฎ่ฒฌไปปใ‚’ๅˆ†้›ขใ—ใพใ™ใ€‚

Catalog ใ‚ตใƒผใƒ“ใ‚นใซใฏไปฅไธ‹ใฎใƒขใ‚ธใƒฅใƒผใƒซใ‚’ๅฎš็พฉใ—ใพใ—ใŸ:

  • Merchandising โ€“ ่ฃฝๅ“ใŠใ‚ˆใณใ‚ซใƒ†ใ‚ดใƒช็ฎก็†;
  • Pricing โ€“ ไพกๆ ผใ€ใƒ—ใƒญใƒขใƒผใ‚ทใƒงใƒณใ€ใŠใ‚ˆใณๅค‰ๆ›ดๅฑฅๆญด็ฎก็†ใ€‚

ใƒขใ‚ธใƒฅใƒผใƒซใ‚’ไฝœๆˆใ™ใ‚‹ใซใฏใ€ๆฌกใฎใ‚ณใƒžใƒณใƒ‰ใ‚’ๅฎŸ่กŒใ—ใพใ™:

lino module new

ใƒขใ‚ธใƒฅใƒผใƒซๅž‹ใ‚ตใƒผใƒ“ใ‚น Catalog ๅ†…ใงใ€ๅธŒๆœ›ใ™ใ‚‹ๆ•ฐใฎใƒขใ‚ธใƒฅใƒผใƒซใ‚’ไฝœๆˆใงใใพใ™ใ€‚ ใพใŸใ€่ค‡้›‘ใ•ใซๅฟœใ˜ใฆใ€ไธ€้ƒจใฎใƒขใ‚ธใƒฅใƒผใƒซใฏๅฐ†ๆฅ็š„ใซ็‹ฌ็ซ‹ใ—ใŸใ‚ตใƒผใƒ“ใ‚นใซใชใ‚‹ๅฏ่ƒฝๆ€งใ‚‚ใ‚ใ‚Šใพใ™ใ€‚ ใ“ใ“ใง็คบใ—ใŸๅŒบๅˆ†ใฏๆ•™่‚ฒ็›ฎ็š„ใฎไพ‹ใงใ‚ใ‚Šใ€ใƒขใ‚ธใƒฅใƒผใƒซๅŒ–ใ•ใ‚ŒใŸ็ต„็น”ใฎไพ‹ใจใ—ใฆไฝฟ็”จใ—ใฆใ„ใพใ™ใ€‚

ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆๆœ€็ต‚ๆง‹้€ 

ใ‚ตใƒผใƒ“ใ‚นใจใƒขใ‚ธใƒฅใƒผใƒซใ‚’ไฝœๆˆใ—ใŸๅพŒใ€ใ‚ฝใƒชใƒฅใƒผใ‚ทใƒงใƒณใฎๆง‹้€ ใฏๆฌกใฎใ‚ˆใ†ใซใชใ‚Šใพใ™:

MyApp/
โ””โ”€โ”€ src/
    โ”œโ”€โ”€ Aspire/
    โ”œโ”€โ”€ Integrations/
    โ”œโ”€โ”€ Services/
    โ”‚   โ”œโ”€โ”€ Catalog/
    โ”‚   โ”‚   โ”œโ”€โ”€ Modules/
    โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ Merchandising/
    โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ Pricing/
    โ”‚   โ”‚   โ”œโ”€โ”€ MyApp.Catalog.Host
    โ”‚   โ”‚   โ””โ”€โ”€ MyApp.Catalog.Infrastructure
    โ”‚   โ”œโ”€โ”€ Sales/
    โ”‚   โ”œโ”€โ”€ Security/
    โ”‚   โ”œโ”€โ”€ Shared/
    โ”‚   โ””โ”€โ”€ Stock/
    โ””โ”€โ”€ WebApps/
        โ”œโ”€โ”€ Backoffice/
        โ”‚   โ”œโ”€โ”€ Services/
        โ”‚   โ”‚   โ”œโ”€โ”€ Catalog/
        โ”‚   โ”‚   โ”œโ”€โ”€ Sales/
        โ”‚   โ”‚   โ”œโ”€โ”€ Security/
        โ”‚   โ”‚   โ””โ”€โ”€ Stock/
        โ”‚   โ”œโ”€โ”€ MyApp.WebApp.Backoffice
        โ”‚   โ””โ”€โ”€ MyApp.WebApp.Backoffice.Client
        โ””โ”€โ”€ Shared/
            โ””โ”€โ”€ MyApp.WebApp.Shared
โ””โ”€โ”€ tests/
    โ””โ”€โ”€ Services/
        โ”œโ”€โ”€ Catalog/
        โ”‚   โ”œโ”€โ”€ Merchandising/
        โ”‚   โ””โ”€โ”€ Pricing/
        โ”œโ”€โ”€ Sales/
        โ”œโ”€โ”€ Security/
        โ”œโ”€โ”€ Shared/
        โ””โ”€โ”€ Stock/

ๆง‹้€ ใฎ่ชฌๆ˜Ž:

  • Services/: ใ‚ทใ‚นใƒ†ใƒ ๅ†…ใฎใ™ในใฆใฎใ‚ตใƒผใƒ“ใ‚นใ‚’ๅซใฟใ€ๅ„ใ‚ตใƒผใƒ“ใ‚นใฏ็‹ฌ็ซ‹ใ—ใฆใŠใ‚Šใ€็‹ฌ่‡ชใฎใƒ“ใ‚ธใƒใ‚นใƒญใ‚ธใƒƒใ‚ฏใ€ใ‚คใƒณใƒ•ใƒฉใ€ใƒ›ใ‚นใƒ†ใ‚ฃใƒณใ‚ฐใ‚’ๆŒใค;
  • Modules/: ใƒขใ‚ธใƒฅใƒผใƒซๅž‹ใ‚ตใƒผใƒ“ใ‚นๅ†…ใฎใƒ•ใ‚ฉใƒซใƒ€ใงใ€็‰นๅฎšใฎๆฉŸ่ƒฝใ‚’ๆ•ด็†ใ—ใ‚ณใƒผใƒ‰ใฎ็ตๆŸๅŠ›ใ‚’็ถญๆŒ;
  • WebApps/: ใ‚ทใ‚นใƒ†ใƒ ใซ้–ข้€ฃใ™ใ‚‹ใƒ•ใƒญใƒณใƒˆใ‚จใƒณใƒ‰ใงใ€ใ‚ตใƒผใƒ“ใ‚นใจ็ตฑๅˆๆธˆใฟ;
  • Shared/: ใ‚ตใƒผใƒ“ใ‚นใจใƒ•ใƒญใƒณใƒˆใ‚จใƒณใƒ‰้–“ใงๅ…ฑๆœ‰ใ•ใ‚Œใ‚‹ใƒฉใ‚คใƒ–ใƒฉใƒชใจใƒชใ‚ฝใƒผใ‚น;
  • tests/: ใ‚ตใƒผใƒ“ใ‚นใŠใ‚ˆใณใƒขใ‚ธใƒฅใƒผใƒซใ”ใจใซๆ•ด็†ใ•ใ‚ŒใŸๅ˜ไฝ“ใƒ†ใ‚นใƒˆใŠใ‚ˆใณ็ตฑๅˆใƒ†ใ‚นใƒˆใ€‚

ใ“ใฎใƒขใ‚ธใƒฅใƒผใƒซๆง‹้€ ใซใ‚ˆใ‚Šใ€ๅ„ใƒใƒผใƒ ใ‚„้–‹็™บ่€…ใฏใ‚ทใ‚นใƒ†ใƒ ใฎ็•ฐใชใ‚‹้ƒจๅˆ†ใง็‹ฌ็ซ‹ใ—ใฆไฝœๆฅญใงใใ€ๆ‹กๅผตๆ€งใ€ไฟๅฎˆๆ€งใ€ใƒ†ใ‚นใƒˆใŒๅฎนๆ˜“ใซใชใ‚Šใพใ™ใ€‚

่ช่จผใจ่ชๅฏใฎ่ฟฝๅŠ 

่ช่จผ(Authentication)ใจ่ชๅฏ(Authorization)ใฏใ€็พไปฃใฎใ‚ทใ‚นใƒ†ใƒ ใซใŠใ„ใฆไธๅฏๆฌ ใช่ฆ็ด ใงใ™ใ€‚ Lino CLIใงใฏใ€ใ“ใ‚Œใ‚‰ใ‚’ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใซ่ฟฝๅŠ ใ™ใ‚‹ใฎใฏ็ฐกๅ˜ใง่ฟ…้€Ÿใงใ™ใ€‚

ใ‚นใƒ†ใƒƒใƒ— 1๏ผš่ช่จผใ‚ณใƒžใƒณใƒ‰ใฎๅฎŸ่กŒ

่ช่จผใŠใ‚ˆใณ่ชๅฏๆฉŸ่ƒฝใ‚’่ฟฝๅŠ ใ™ใ‚‹ใซใฏใ€ๆฌกใฎใ‚ณใƒžใƒณใƒ‰ใ‚’ไฝฟ็”จใ—ใพใ™๏ผš

lino features auth add

CLIใฏๆฌกใฎๆ‰‹้ †ใ‚’ๆกˆๅ†…ใ—ใพใ™๏ผš

  • ใ‚ตใƒผใƒ“ใ‚นใพใŸใฏใƒขใ‚ธใƒฅใƒผใƒซใฎ้ธๆŠž๏ผš่ช่จผ้–ข้€ฃใฎใ‚ขใƒผใƒ†ใ‚ฃใƒ•ใ‚กใ‚ฏใƒˆใ‚’ใ‚คใƒณใ‚นใƒˆใƒผใƒซใ™ใ‚‹ๅ ดๆ‰€ใ‚’ๆŒ‡ๅฎšใ™ใ‚‹ๅฟ…่ฆใŒใ‚ใ‚Šใพใ™ใ€‚ ใ‚ตใƒณใƒ—ใƒซใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใงใฏใ€ใ‚ทใ‚นใƒ†ใƒ ใฎใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃใƒญใ‚ธใƒƒใ‚ฏใ‚’้›†ไธญ็ฎก็†ใ™ใ‚‹ Security ใ‚ตใƒผใƒ“ใ‚นใ‚’ไฝฟ็”จใ—ใพใ™๏ผ›
  • ่ฟฝๅŠ ่จญๅฎš๏ผšใƒฆใƒผใ‚ถใƒผใ€ใƒญใƒผใƒซใ€ๆจฉ้™ใฎใƒ†ใƒผใƒ–ใƒซไฝœๆˆใŠใ‚ˆใณใ‚ขใ‚ฏใ‚ปใ‚นใƒใƒชใ‚ทใƒผใฎ่จญๅฎšใ€‚

ใ‚นใƒ†ใƒƒใƒ— 2๏ผš็”Ÿๆˆใ•ใ‚Œใ‚‹ๆง‹้€ 

ใ‚ณใƒžใƒณใƒ‰ๅฎŸ่กŒๅพŒใ€Security ใ‚ตใƒผใƒ“ใ‚นใซใฏๆฌกใฎใ‚ˆใ†ใชใƒ•ใ‚กใ‚คใƒซใ‚„ใƒ•ใ‚ฉใƒซใƒ€ใŒๅซใพใ‚Œใพใ™๏ผš

  • Entities: ใƒฆใƒผใ‚ถใƒผใ€ใƒญใƒผใƒซใ€ๆจฉ้™ใฎใ‚ฏใƒฉใ‚น๏ผ›
  • Infrastructure: ใƒ‡ใƒผใ‚ฟใƒ™ใƒผใ‚นๆง‹ๆˆใจใƒ†ใƒผใƒ–ใƒซไฝœๆˆ็”จใฎใƒžใ‚คใ‚ฐใƒฌใƒผใ‚ทใƒงใƒณ๏ผ›
  • Application: ่ช่จผใ‚ตใƒผใƒ“ใ‚นใ€ใƒฆใƒผใ‚ถใƒผ็ฎก็†ใ€่ณ‡ๆ ผๆƒ…ๅ ฑใฎๆคœ่จผ๏ผ›
  • API/Host: ใƒญใ‚ฐใ‚คใƒณใ€ใƒญใ‚ฐใ‚ขใ‚ฆใƒˆใ€็™ป้Œฒใ€ใƒญใƒผใƒซ็ฎก็†็”จใฎใ‚จใƒณใƒ‰ใƒใ‚คใƒณใƒˆใ€‚

ใ“ใ‚Œใซใ‚ˆใ‚Šใ€ใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใฏๅ …็‰ขใช่ช่จผๆฉŸ่ƒฝใจ็ดฐใ‹ใ„ใ‚ขใ‚ฏใ‚ปใ‚นๅˆถๅพกใ‚’ๅ‚™ใˆใ€่ค‡ๆ•ฐใฎใƒฆใƒผใ‚ถใƒผใ‚„็•ฐใชใ‚‹ๆจฉ้™ใƒฌใƒ™ใƒซใซๅฏพๅฟœใงใใ‚‹ใ‚ˆใ†ใซใชใ‚Šใพใ™ใ€‚

ใƒใƒƒใ‚ฏใ‚ฐใƒฉใ‚ฆใƒณใƒ‰ใ‚ธใƒงใƒ–ใฎ่ฟฝๅŠ 

Lino CLI ใ‚’ไฝฟ็”จใ—ใฆๆง‹็ฏ‰ใ—ใฆใ„ใ‚‹ใ‚ˆใ†ใชๅˆ†ๆ•ฃๅž‹ใƒขใ‚ธใƒฅใƒผใƒซๅผใ‚ทใ‚นใƒ†ใƒ ใงใฏใ€ใ™ในใฆใฎใ‚ตใƒผใƒ“ใ‚นใŒ็›ดๆŽฅ้€šไฟกใ™ใ‚‹ใ‚ใ‘ใงใฏใ‚ใ‚Šใพใ›ใ‚“ใ€‚ ๆƒ…ๅ ฑไบคๆ›ใฎไธ€่ฒซๆ€งใจไฟก้ ผๆ€งใ‚’็ขบไฟใ™ใ‚‹ใŸใ‚ใซใ€็ตฑๅˆใ‚คใƒ™ใƒณใƒˆใ‚’ไฝฟ็”จใ—ใพใ™ใ€‚ ใ—ใ‹ใ—ใ€ใ“ใ‚Œใ‚‰ใฎใ‚คใƒ™ใƒณใƒˆใ‚’ๅŠน็އ็š„ใ‹ใค้žๅŒๆœŸใซๅ‡ฆ็†ใ™ใ‚‹ใŸใ‚ใซใฏใ€ใƒใƒƒใ‚ฏใ‚ฐใƒฉใ‚ฆใƒณใƒ‰ใ‚ธใƒงใƒ–ใŒๅฟ…่ฆใงใ™ใ€‚

Lino ใฏ Outbox ใƒ‘ใ‚ฟใƒผใƒณ ใ‚’ไฝฟ็”จใ—ใฆใ€ใ‚ตใƒผใƒ“ใ‚นใซใ‚ˆใฃใฆ็”Ÿๆˆใ•ใ‚ŒใŸใ™ในใฆใฎใƒกใƒƒใ‚ปใƒผใ‚ธใŒ้€ไฟกใ•ใ‚Œใ‚‹ๅ‰ใซ็ขบๅฎŸใซ่จ˜้Œฒใ•ใ‚Œใ‚‹ใ“ใจใ‚’ไฟ่จผใ—ใพใ™ใ€‚ ใ“ใ‚Œใซใ‚ˆใ‚Šใ€ไปฅไธ‹ใŒๅฏ่ƒฝใซใชใ‚Šใพใ™๏ผš

  • ใ‚ตใƒผใƒ“ใ‚นใฎ้šœๅฎณใ‚„ๅ†่ตทๅ‹•ๆ™‚ใซใ‚คใƒ™ใƒณใƒˆใ‚’ๅคฑใ‚ใชใ„ใ‚ˆใ†ใซใ™ใ‚‹๏ผ›
  • ๅŒใ˜ใƒกใƒƒใ‚ปใƒผใ‚ธใŒไธ€ๅบฆใ ใ‘้€ไฟกใ•ใ‚Œใ‚‹ใ“ใจใ‚’ไฟ่จผใ™ใ‚‹๏ผ›
  • ้€ไฟกๅคฑๆ•—ๆ™‚ใซใƒกใƒƒใ‚ปใƒผใ‚ธใ‚’ๅ†ๅ‡ฆ็†ใงใใ‚‹๏ผ›
  • ใ‚คใƒ™ใƒณใƒˆๅ‡ฆ็†ใ‚’ใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใฎไธป่ฆใƒญใ‚ธใƒƒใ‚ฏใ‹ใ‚‰ๅˆ†้›ขใ—ใ€ใƒ‘ใƒ•ใ‚ฉใƒผใƒžใƒณใ‚นใจใ‚นใ‚ฑใƒผใƒฉใƒ“ใƒชใƒ†ใ‚ฃใ‚’ๅ‘ไธŠใ•ใ›ใ‚‹ใ€‚

ใ‚นใƒ†ใƒƒใƒ— 1๏ผšใ‚ณใƒžใƒณใƒ‰ใฎๅฎŸ่กŒ

ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใซใƒใƒƒใ‚ฏใ‚ฐใƒฉใ‚ฆใƒณใƒ‰ใ‚ธใƒงใƒ–ใฎใ‚ตใƒใƒผใƒˆใ‚’่ฟฝๅŠ ใ™ใ‚‹ใซใฏใ€ๆฌกใฎใ‚ณใƒžใƒณใƒ‰ใ‚’ๅฎŸ่กŒใ—ใพใ™๏ผš

lino features background-job add

CLI ใฏใƒใƒƒใ‚ฏใ‚ฐใƒฉใ‚ฆใƒณใƒ‰ใ‚ธใƒงใƒ–ใ‚’ใ‚คใƒณใ‚นใƒˆใƒผใƒซใ™ใ‚‹ใ‚ตใƒผใƒ“ใ‚นใ‚’้ธๆŠžใ™ใ‚‹ใ‚ˆใ†ๆฑ‚ใ‚ใพใ™ใ€‚้€šๅธธใ€ใ‚คใƒ™ใƒณใƒˆ็”Ÿๆˆใ‚’้›†ไธญ็ฎก็†ใ™ใ‚‹ใ‚ตใƒผใƒ“ใ‚นใ€ไพ‹ใˆใฐ Catalog ใ‚„ Sales ใ‚’้ธๆŠžใ—ใพใ™ใ€‚

ใ‚นใƒ†ใƒƒใƒ— 2๏ผšๅฎŸ่กŒ่จญๅฎš

่จญๅฎšไธญใซใ€ไปฅไธ‹ใ‚’ๅฎš็พฉใงใใพใ™๏ผš

  • ใƒใ‚งใƒƒใ‚ฏ้–“้š”๏ผšใƒใƒƒใ‚ฏใ‚ฐใƒฉใ‚ฆใƒณใƒ‰ใ‚ธใƒงใƒ–ใŒ Outbox ใƒ†ใƒผใƒ–ใƒซใ‚’ๆ–ฐใ—ใ„ใƒกใƒƒใ‚ปใƒผใ‚ธใฎใŸใ‚ใซ็ขบ่ชใ™ใ‚‹้ ปๅบฆใ‚’ๆฑบๅฎšใ—ใพใ™ใ€‚้–“้š”ใŒ็Ÿญใ™ใŽใ‚‹ใจใƒชใ‚ฝใƒผใ‚นไฝฟ็”จ้‡ใŒๅข—ๅŠ ใ—ใ€้•ทใ™ใŽใ‚‹ใจใ‚คใƒ™ใƒณใƒˆ้…ไฟกใŒ้…ใ‚Œใ‚‹ๅฏ่ƒฝๆ€งใŒใ‚ใ‚Šใพใ™๏ผ›
  • ไธ€ๅบฆใซๅ‡ฆ็†ใ™ใ‚‹ใƒฌใ‚ณใƒผใƒ‰ใฎใƒใƒƒใƒใ‚ตใ‚คใ‚บ๏ผš1 ๅ›žใฎๅฎŸ่กŒใง่ชญใฟๅ–ใ‚ŠใŠใ‚ˆใณ้€ไฟกใ•ใ‚Œใ‚‹ใ‚คใƒ™ใƒณใƒˆใฎๆ•ฐใ‚’ๅˆถๅพกใ—ใพใ™ใ€‚ๅคงใใชใƒใƒƒใƒใฏใƒ‘ใƒ•ใ‚ฉใƒผใƒžใƒณใ‚นใ‚’ๅ‘ไธŠใ•ใ›ใพใ™ใŒใ€ใ‚ˆใ‚Šๅคšใใฎใƒกใƒขใƒชใจๅ‡ฆ็†่ƒฝๅŠ›ใŒๅฟ…่ฆใงใ™๏ผ›
  • ๅ†่ฉฆ่กŒใƒใƒชใ‚ทใƒผ๏ผšใƒกใƒƒใ‚ปใƒผใ‚ธใฎ้€ไฟกใซๅคฑๆ•—ใ—ใŸๅ ดๅˆใ€ใ‚ธใƒงใƒ–ใŒๅ†้€ไฟกใ‚’่ฉฆใฟใ‚‹ๅ›žๆ•ฐใ‚’่จญๅฎšใงใใพใ™ใ€‚

ใ“ใ‚Œใ‚‰ใฎใƒ‘ใƒฉใƒกใƒผใ‚ฟใฏใ€ใ‚ทใ‚นใƒ†ใƒ ใฎ่ฆๆจกใ€ใƒžใ‚ทใƒณใฎๆ€ง่ƒฝใ€ใŠใ‚ˆใณไบˆๆƒณใ•ใ‚Œใ‚‹ใ‚คใƒ™ใƒณใƒˆ้‡ใซใ‚ˆใฃใฆ็•ฐใชใ‚Šใพใ™ใ€‚

ใ‚นใƒ†ใƒƒใƒ— 3๏ผš็”Ÿๆˆใ•ใ‚Œใ‚‹ๆง‹้€ 

่จญๅฎšใŒๅฎŒไบ†ใ™ใ‚‹ใจใ€ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใซใฏๅ„ใ‚ตใƒผใƒ“ใ‚นใฎ Outbox ใƒ†ใƒผใƒ–ใƒซใ‹ใ‚‰ใƒกใƒƒใ‚ปใƒผใ‚ธใ‚’ๅ‡ฆ็†ใ™ใ‚‹ๆบ–ๅ‚™ใŒๆ•ดใฃใŸใƒใƒƒใ‚ฏใ‚ฐใƒฉใ‚ฆใƒณใƒ‰ใ‚ธใƒงใƒ–ใŒไฝœๆˆใ•ใ‚Œใพใ™ใ€‚

ใ“ใ‚Œใซใ‚ˆใ‚Šใ€ใ™ในใฆใฎ็ตฑๅˆใ‚คใƒ™ใƒณใƒˆใŒไฟก้ ผๆ€งใจๅŠน็އๆ€งใ‚’ๆŒใฃใฆๅ‡ฆ็†ใ•ใ‚Œใ€่ค‡ๆ•ฐใฎใ‚ตใƒผใƒ“ใ‚นใ‚„ใƒขใ‚ธใƒฅใƒผใƒซใŒ้žๅŒๆœŸใซ้€šไฟกใงใใ‚‹ใ‚ˆใ†ใซใชใ‚Šใ€ใƒกใ‚คใƒณใ‚ทใ‚นใƒ†ใƒ ใฎใƒ‘ใƒ•ใ‚ฉใƒผใƒžใƒณใ‚นใซๅฝฑ้Ÿฟใ‚’ไธŽใˆใพใ›ใ‚“ใ€‚

ใ‚จใƒณใƒ†ใ‚ฃใƒ†ใ‚ฃใจๅˆ—ๆŒ™ๅž‹ใฎไฝœๆˆ

ใ“ใฎใ‚ปใ‚ฏใ‚ทใƒงใƒณใงใฏใ€ใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใฎใ‚จใƒณใƒ†ใ‚ฃใƒ†ใ‚ฃใ€ๅˆ—ๆŒ™ๅž‹ใ€ๅ€คใ‚ชใƒ–ใ‚ธใ‚งใ‚ฏใƒˆใฎ่จญ่จˆใซใคใ„ใฆ่ฉณ็ดฐใซ่ชฌๆ˜Žใ—ใ€ๅ„้ …็›ฎใŒใฉใฎใ‚ตใƒผใƒ“ใ‚นใจใƒขใ‚ธใƒฅใƒผใƒซใงไฝœๆˆใ•ใ‚Œใ‚‹ใ‹ใ‚’็คบใ—ใพใ™ใ€‚

1. Category ใ‚จใƒณใƒ†ใ‚ฃใƒ†ใ‚ฃใฎไฝœๆˆ

ใ‚จใƒณใƒ†ใ‚ฃใƒ†ใ‚ฃใ‚’ไฝœๆˆใ™ใ‚‹ใซใฏใ€ไปฅไธ‹ใฎใ‚ณใƒžใƒณใƒ‰ใ‚’ไฝฟ็”จใ—ใพใ™๏ผš

lino entity new

ใ“ใฎใ‚จใƒณใƒ†ใ‚ฃใƒ†ใ‚ฃใฏ Catalog ใ‚ตใƒผใƒ“ใ‚นใจ Merchandising ใƒขใ‚ธใƒฅใƒผใƒซใซไปฅไธ‹ใฎๆง‹้€ ใงไฝœๆˆใ•ใ‚Œใพใ™๏ผš

โ”Œโ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ PK โ”‚ FK โ”‚ Property name โ”‚ Type   โ”‚ Length โ”‚ Required โ”‚ Auto-increment โ”‚
โ”œโ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ x  โ”‚    โ”‚ Id            โ”‚ Guid   โ”‚        โ”‚    x     โ”‚       x        โ”‚
โ”œโ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚    โ”‚    โ”‚ Name          โ”‚ string โ”‚   50   โ”‚    x     โ”‚                โ”‚
โ””โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

2. Product ใ‚จใƒณใƒ†ใ‚ฃใƒ†ใ‚ฃใฎไฝœๆˆ

ๆฌกใซใ€ๅŒใ˜ใ‚ตใƒผใƒ“ใ‚นใจใƒขใ‚ธใƒฅใƒผใƒซๅ†…ใง Product ใ‚จใƒณใƒ†ใ‚ฃใƒ†ใ‚ฃใ‚’ไฝœๆˆใ—ใ€ๅ€คใ‚ชใƒ–ใ‚ธใ‚งใ‚ฏใƒˆใจๅˆ—ๆŒ™ๅž‹ใ‚’ๅซใ‚ใพใ™๏ผš

โ”Œโ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ PK โ”‚ FK โ”‚ Property name โ”‚ Type        โ”‚ Length โ”‚ Required โ”‚ Auto-increment โ”‚
โ”œโ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ x  โ”‚    โ”‚ Id            โ”‚ Guid        โ”‚        โ”‚    x     โ”‚       x        โ”‚
โ”œโ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚    โ”‚    โ”‚ Name          โ”‚ string      โ”‚  100   โ”‚    x     โ”‚                โ”‚
โ”œโ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚    โ”‚    โ”‚ Description   โ”‚ string      โ”‚  500   โ”‚    x     โ”‚                โ”‚
โ”œโ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚    โ”‚    โ”‚ Price         โ”‚ decimal     โ”‚        โ”‚    x     โ”‚                โ”‚
โ”œโ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚    โ”‚ x  โ”‚ CategoryId    โ”‚ Category    โ”‚        โ”‚    x     โ”‚                โ”‚
โ”œโ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚    โ”‚    โ”‚ Dimensions    โ”‚ ValueObject โ”‚        โ”‚          โ”‚                โ”‚
โ”œโ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚    โ”‚    โ”‚ Status        โ”‚ Enum        โ”‚        โ”‚    x     โ”‚                โ”‚
โ””โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

2.1 ๅ€คใ‚ชใƒ–ใ‚ธใ‚งใ‚ฏใƒˆ ProductDimension ใฎไฝœๆˆ

ใ“ใฎๅ€คใ‚ชใƒ–ใ‚ธใ‚งใ‚ฏใƒˆใฏ่ฃฝๅ“ใฎๅฏธๆณ•ใ‚’่กจใ—ใพใ™๏ผš

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Property name โ”‚ Type    โ”‚ Length โ”‚ Required โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Width         โ”‚ decimal โ”‚        โ”‚    x     โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Height        โ”‚ decimal โ”‚        โ”‚    x     โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Depth         โ”‚ decimal โ”‚        โ”‚    x     โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

2.2 ๅˆ—ๆŒ™ๅž‹ ProductStatus ใฎไฝœๆˆ

ใ“ใฎๅˆ—ๆŒ™ๅž‹ใฏ่ฃฝๅ“ใฎใ‚นใƒ†ใƒผใ‚ฟใ‚นใ‚’ๅฎš็พฉใ—ใพใ™๏ผš

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Value โ”‚ Name         โ”‚ Display Name โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ 1     โ”‚ Active       โ”‚ Active       โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ 2     โ”‚ Inactive     โ”‚ Inactive     โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ 3     โ”‚ Discontinued โ”‚ Discontinued โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

3. ๆ–ฐใ—ใ„ใƒ—ใƒญใƒ‘ใƒ†ใ‚ฃใฎ่ฟฝๅŠ 

ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใฎ้€ฒ่กŒใซไผดใ„ใ€ๆ—ขๅญ˜ใฎใ‚จใƒณใƒ†ใ‚ฃใƒ†ใ‚ฃใ‚’็ทจ้›†ใ—ใฆๆ–ฐใ—ใ„ใƒ—ใƒญใƒ‘ใƒ†ใ‚ฃใ‚’่ฟฝๅŠ ใงใใพใ™ใ€‚ ไพ‹ใˆใฐใ€Product ใ‚จใƒณใƒ†ใ‚ฃใƒ†ใ‚ฃใซ็”ปๅƒใƒชใ‚นใƒˆใ‚’่ฟฝๅŠ ใ—ใพใ™๏ผš

lino entity edit

List<ProductImage> ๅž‹ใฎ Images ใƒ—ใƒญใƒ‘ใƒ†ใ‚ฃใ‚’ไฝœๆˆใ™ใ‚‹ใจใ€ๆฌกใฎๆง‹้€ ใŒ็”Ÿๆˆใ•ใ‚Œใพใ™๏ผš

โ”Œโ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ PK โ”‚ FK โ”‚ Property name โ”‚ Type               โ”‚ Length โ”‚ Required โ”‚ Auto-increment โ”‚
โ”œโ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ x  โ”‚    โ”‚ Id            โ”‚ Guid               โ”‚        โ”‚    x     โ”‚       x        โ”‚
โ”œโ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚    โ”‚    โ”‚ Name          โ”‚ string             โ”‚  100   โ”‚    x     โ”‚                โ”‚
โ”œโ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚    โ”‚    โ”‚ Description   โ”‚ string             โ”‚  500   โ”‚    x     โ”‚                โ”‚
โ”œโ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚    โ”‚    โ”‚ Price         โ”‚ decimal            โ”‚        โ”‚    x     โ”‚                โ”‚
โ”œโ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚    โ”‚ x  โ”‚ CategoryId    โ”‚ EntityId           โ”‚        โ”‚    x     โ”‚                โ”‚
โ”œโ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚    โ”‚    โ”‚ Dimensions    โ”‚ ValueObject        โ”‚        โ”‚          โ”‚                โ”‚
โ”œโ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚    โ”‚    โ”‚ Status        โ”‚ Enum               โ”‚        โ”‚    x     โ”‚                โ”‚
โ”œโ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚    โ”‚ x  โ”‚ Images        โ”‚ List<ProductImage> โ”‚        โ”‚          โ”‚                โ”‚
โ””โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

3.1 ProductImage ใ‚จใƒณใƒ†ใ‚ฃใƒ†ใ‚ฃใฎไฝœๆˆ

ใ“ใฎใ‚จใƒณใƒ†ใ‚ฃใƒ†ใ‚ฃใฏ Product ้›†็ด„ใซๅฑžใ—ใ€ไปฅไธ‹ใฎๆง‹้€ ใ‚’ๆŒใกใพใ™๏ผš

โ”Œโ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ PK โ”‚ FK โ”‚ Property name โ”‚ Type           โ”‚ Length โ”‚ Required โ”‚ Auto-increment โ”‚
โ”œโ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ x  โ”‚    โ”‚ Id            โ”‚ Guid           โ”‚        โ”‚    x     โ”‚       x        โ”‚
โ”œโ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚    โ”‚ x  โ”‚ ProductId     โ”‚ EntityId       โ”‚        โ”‚    x     โ”‚                โ”‚
โ”œโ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚    โ”‚    โ”‚ UploadDate    โ”‚ DateTimeOffset โ”‚        โ”‚    x     โ”‚                โ”‚
โ”œโ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚    โ”‚    โ”‚ Image         โ”‚ File           โ”‚        โ”‚    x     โ”‚                โ”‚
โ””โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

4. ไป–ใฎใ‚ตใƒผใƒ“ใ‚น็”จใ‚จใƒณใƒ†ใ‚ฃใƒ†ใ‚ฃใฎไฝœๆˆ

Sales ใ‚ตใƒผใƒ“ใ‚นใงใฏใ€็ตฑๅˆใ‚คใƒ™ใƒณใƒˆใซใ‚ˆใฃใฆใƒ‡ใƒผใ‚ฟใŒ่ฃœๅ……ใ•ใ‚Œใ‚‹ ProductSnapshot ใ‚จใƒณใƒ†ใ‚ฃใƒ†ใ‚ฃใ‚’ไฝœๆˆใ—ใพใ™ใ€‚ ๅ…ƒใฎ Product ใ‚จใƒณใƒ†ใ‚ฃใƒ†ใ‚ฃใฎ Id ใฏ Catalog ใ‚ตใƒผใƒ“ใ‚นใ‹ใ‚‰ๆฅใ‚‹ใŸใ‚ใ€ใ“ใ“ใงใฏ่‡ชๅ‹•ใ‚คใƒณใ‚ฏใƒชใƒกใƒณใƒˆใงใใพใ›ใ‚“ใ€‚

โ”Œโ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ PK โ”‚ FK โ”‚ Property name โ”‚ Type    โ”‚ Length โ”‚ Required โ”‚ Auto-increment โ”‚
โ”œโ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ x  โ”‚    โ”‚ Id            โ”‚ Guid    โ”‚        โ”‚    x     โ”‚                โ”‚
โ”œโ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚    โ”‚    โ”‚ Name          โ”‚ string  โ”‚  100   โ”‚    x     โ”‚                โ”‚
โ”œโ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚    โ”‚    โ”‚ Price         โ”‚ decimal โ”‚        โ”‚    x     โ”‚                โ”‚
โ””โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

ๆณจๆ„: Sales ใ‚ตใƒผใƒ“ใ‚นใฎ ProductSnapshot ใซใฏใ€ๅฟ…่ฆใชใƒ•ใ‚ฃใƒผใƒซใƒ‰ใฎใฟใŒใ‚ณใƒ”ใƒผใ•ใ‚Œใฆใ„ใพใ™ใ€‚Customerใ€Orderใ€StockItem ใชใฉใฎ่ฃœๅŠฉ็š„ใชใ‚จใƒณใƒ†ใ‚ฃใƒ†ใ‚ฃใฏใ€ๆ–‡ๆ›ธใ‚’็ฐก็•ฅๅŒ–ใ™ใ‚‹ใŸใ‚ใ“ใ“ใงใฏ่ฉณ็ดฐใ‚’็œ็•ฅใ—ใพใ™ใ€‚

ใ‚คใƒ™ใƒณใƒˆใจใใฎใƒใƒณใƒ‰ใƒฉใƒผใฎไฝœๆˆ

ๅ‰ใฎใ‚ปใ‚ฏใ‚ทใƒงใƒณใ‚’ๆŒฏใ‚Š่ฟ”ใ‚‹ใจใ€ใƒขใ‚ธใƒฅใƒผใƒซๅŒ–ใ‚ตใƒผใƒ“ใ‚น Catalog.Merchandising ใงใฏ Productใ€Categoryใ€ProductImage ใฎใ‚จใƒณใƒ†ใ‚ฃใƒ†ใ‚ฃใ‚’ไฝœๆˆใ—ใ€ใ‚ตใƒผใƒ“ใ‚น Sales ใงใฏ ProductSnapshot ใ‚’ไฝœๆˆใ—ใพใ—ใŸใ€‚

ใ“ใ“ใงใฏใ€ใƒ‰ใƒกใ‚คใƒณใ‚คใƒ™ใƒณใƒˆใจ็ตฑๅˆใ‚คใƒ™ใƒณใƒˆใ‚’ไฝœๆˆใ—ใพใ™ใ€‚็›ฎ็š„ใฏใ€Catalog ใ‚ตใƒผใƒ“ใ‚นใง่ฃฝๅ“ใ‚’ไฝœๆˆใพใŸใฏๆ›ดๆ–ฐใ—ใŸใจใใซใ€ใใฎๅค‰ๆ›ดใŒ Sales ใ‚„ Stock ใชใฉใฎๆถˆ่ฒปใ‚ตใƒผใƒ“ใ‚นใซ่ค‡่ฃฝใ•ใ‚Œใ‚‹ใ“ใจใงใ™ใ€‚

1. ใƒ‰ใƒกใ‚คใƒณใ‚คใƒ™ใƒณใƒˆใฎไฝœๆˆ

ๆœ€ๅˆใฎใ‚นใƒ†ใƒƒใƒ—ใฏใ€ไปฅไธ‹ใฎใ‚ณใƒžใƒณใƒ‰ใ‚’ไฝฟ็”จใ—ใฆใƒ‰ใƒกใ‚คใƒณใ‚คใƒ™ใƒณใƒˆ ProductCreated ใŠใ‚ˆใณ ProductUpdated ใ‚’ไฝœๆˆใ™ใ‚‹ใ“ใจใงใ™:

lino event new

ไฝœๆˆไธญใซใ€ใ‚คใƒ™ใƒณใƒˆใ‚’ใƒใƒณใƒ‰ใƒฉใƒผใซ้–ข้€ฃไป˜ใ‘ใ‚‹ใจๅŒๆ™‚ใซ็ตฑๅˆใ‚คใƒ™ใƒณใƒˆใฎใƒˆใƒชใ‚ฌใƒผใ‚’่จญๅฎšใงใใพใ™ใ€‚ใ“ใ‚Œใซใ‚ˆใ‚Šใ€ๅฟ…่ฆใชๅ…จใƒ•ใƒญใƒผใฎไฝœๆˆใŒไธญๅคฎ้›†ๆจฉๅŒ–ใ•ใ‚Œใพใ™ใ€‚

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Question                                             โ”‚ Answer                         โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Select a service:                                    โ”‚ Catalog                        โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Select a module:                                     โ”‚ Merchandising                  โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Select a entity:                                     โ”‚ Product                        โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Select the event type:                               โ”‚ Domain Event                   โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Enter the name of the event:                         โ”‚ ProductCreated                 โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Do you want to create an associated event handler?   โ”‚ Yes                            โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Trigger a integration event?                         โ”‚ Yes                            โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Choose the integration event to be triggered:        โ”‚ (Create new integration event) โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Enter the name of the event:                         โ”‚ ProductCreated                 โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Which model will be used for this integration event? โ”‚ Creation model                 โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

ๅŒๆง˜ใซใ€ProductUpdated ใ‚คใƒ™ใƒณใƒˆใ‚‚ไฝœๆˆใ—ใพใ™๏ผš

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Question                                             โ”‚ Answer                         โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Select a service:                                    โ”‚ Catalog                        โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Select a module:                                     โ”‚ Merchandising                  โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Select a entity:                                     โ”‚ Product                        โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Select the event type:                               โ”‚ Domain Event                   โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Enter the name of the event:                         โ”‚ ProductUpdated                 โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Do you want to create an associated event handler?   โ”‚ Yes                            โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Trigger a integration event?                         โ”‚ Yes                            โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Choose the integration event to be triggered:        โ”‚ (Create new integration event) โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Enter the name of the event:                         โ”‚ ProductUpdated                 โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Which model will be used for this integration event? โ”‚ Update model                   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

ใ“ใ‚Œใซใ‚ˆใ‚Šใ€ไปฅไธ‹ใŒๆƒใ„ใพใ™๏ผš

  • ไฝœๆˆใ•ใ‚ŒใŸใƒ‰ใƒกใ‚คใƒณใ‚คใƒ™ใƒณใƒˆ (ProductCreated ใŠใ‚ˆใณ ProductUpdated)
  • ๅฏพๅฟœใ™ใ‚‹ใƒ‰ใƒกใ‚คใƒณใ‚คใƒ™ใƒณใƒˆใƒใƒณใƒ‰ใƒฉใƒผ
  • ใƒ‰ใƒกใ‚คใƒณใ‚คใƒ™ใƒณใƒˆใƒใƒณใƒ‰ใƒฉใƒผใซใ‚ˆใฃใฆ Outbox ใซ่‡ชๅ‹•็š„ใซ็™ป้Œฒใ•ใ‚ŒใŸ็ตฑๅˆใ‚คใƒ™ใƒณใƒˆ

2. ็ตฑๅˆใ‚คใƒ™ใƒณใƒˆใƒใƒณใƒ‰ใƒฉใƒผใฎไฝœๆˆ

ๆฌกใฎใ‚นใƒ†ใƒƒใƒ—ใฏใ€ใฉใฎใ‚ตใƒผใƒ“ใ‚นใŒ็ตฑๅˆใ‚คใƒ™ใƒณใƒˆใ‚’ๆถˆ่ฒปใ™ใ‚‹ใ‹ใ‚’ๅฎš็พฉใ™ใ‚‹ใ“ใจใงใ™ใ€‚ใใฎใŸใ‚ใซใ€ๆฌกใฎใ‚ณใƒžใƒณใƒ‰ใ‚’ไฝฟ็”จใ—ใพใ™๏ผš

lino event-handler new

ไฝœๆˆใƒ•ใƒญใƒผใซใฏๆฌกใŒๅซใพใ‚Œใพใ™๏ผš

  • ใƒใƒณใƒ‰ใƒฉใƒผใ‚’ๅซใ‚€ใ‚ตใƒผใƒ“ใ‚นใ€ใƒขใ‚ธใƒฅใƒผใƒซใ€ใ‚จใƒณใƒ†ใ‚ฃใƒ†ใ‚ฃใ‚’้ธๆŠžใ™ใ‚‹
  • ๆถˆ่ฒปใ™ใ‚‹็ตฑๅˆใ‚คใƒ™ใƒณใƒˆใจใ€ใใฎใ‚คใƒ™ใƒณใƒˆใŒใฉใฎใ‚ตใƒผใƒ“ใ‚น/ใƒขใ‚ธใƒฅใƒผใƒซ/ใ‚จใƒณใƒ†ใ‚ฃใƒ†ใ‚ฃใ‹ใ‚‰ๆฅใ‚‹ใ‹ใ‚’้ธๆŠžใ™ใ‚‹

ไพ‹ใˆใฐใ€Sales ใ‚ตใƒผใƒ“ใ‚นใงใฏใ€ProductCreated ใจ ProductUpdated ใฎใƒใƒณใƒ‰ใƒฉใƒผใ‚’ไฝœๆˆใ—ใ€Catalog.Merchandising.Product ใง็™บ็”Ÿใ—ใŸใ‚คใƒ™ใƒณใƒˆใ‚’ๆถˆ่ฒปใ—ใพใ™๏ผš

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Question                                   โ”‚ Answer            โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Select a service:                          โ”‚ Sales             โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Select a entity:                           โ”‚ ProductSnapshot   โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Select the event type:                     โ”‚ Integration Event โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Select the event's service to be consumed: โ”‚ Catalog           โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Select the event's module to be consumed:  โ”‚ Merchandising     โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Select the event's entity to be consumed:  โ”‚ Product           โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Choose the event to be consumed:           โ”‚ ProductCreated    โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Enter the name of the event handler:       โ”‚ ProductCreated    โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Question                                   โ”‚ Answer            โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Select a service:                          โ”‚ Sales             โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Select a entity:                           โ”‚ ProductSnapshot   โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Select the event type:                     โ”‚ Integration Event โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Select the event's service to be consumed: โ”‚ Catalog           โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Select the event's module to be consumed:  โ”‚ Merchandising     โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Select the event's entity to be consumed:  โ”‚ Product           โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Choose the event to be consumed:           โ”‚ ProductUpdated    โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Enter the name of the event handler:       โ”‚ ProductUpdated    โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

ใ“ใ‚Œใซใ‚ˆใ‚Šใ€Sales ใ‚ตใƒผใƒ“ใ‚นใซ2ใคใฎ็ตฑๅˆใ‚คใƒ™ใƒณใƒˆใƒใƒณใƒ‰ใƒฉใƒผใŒๅญ˜ๅœจใ—ใ€Catalog.Merchandising ใฎ็ตฑๅˆใ‚คใƒ™ใƒณใƒˆใ‹ใ‚‰ๅฟ…่ฆใชใƒ•ใ‚ฃใƒผใƒซใƒ‰ใฎใฟใ‚’ๆถˆ่ฒปใ—ใพใ™ใ€‚ ใ“ใ‚Œใซใ‚ˆใ‚Šใ€่ค‡่ฃฝใƒ†ใƒผใƒ–ใƒซใซใฏๅฟ…่ฆใชใƒ‡ใƒผใ‚ฟใ ใ‘ใŒไฟๆŒใ•ใ‚Œใ€ใ‚นใƒˆใƒฌใƒผใ‚ธใจใƒ‘ใƒ•ใ‚ฉใƒผใƒžใƒณใ‚นใŒๆœ€้ฉๅŒ–ใ•ใ‚Œใพใ™ใ€‚

ใ‚ฆใ‚งใƒ–ใƒšใƒผใ‚ธใ€APIใ€Commandsใ€ใŠใ‚ˆใณ Queries ใฎ็”Ÿๆˆ

Lino CLI ใฎๅคงใใชๅˆฉ็‚นใฎไธ€ใคใฏใ€ใ‚ฆใ‚งใƒ–ใƒšใƒผใ‚ธใ€APIใ€Commandsใ€ใŠใ‚ˆใณ Queries ใ‚’่‡ชๅ‹•ใง็ตฑๅˆ็š„ใซไฝœๆˆใงใใ‚‹ใ“ใจใซใ‚ˆใ‚Šใ€้–‹็™บๅ…จไฝ“ใฎใƒ•ใƒญใƒผใ‚’็ฐก็•ฅๅŒ–ใงใใ‚‹็‚นใงใ™ใ€‚ ้–‹ๅง‹ใ™ใ‚‹ใซใฏใ€ไปฅไธ‹ใฎใ‚ณใƒžใƒณใƒ‰ใ‚’ๅฎŸ่กŒใ—ใฆใใ ใ•ใ„๏ผš

lino page new

ใƒ—ใƒญใ‚ปใ‚นไธญใซใ€ไปฅไธ‹ใฎๆ“ไฝœใ‚’่กŒใ„ใพใ™๏ผš

  • ๅ…ฌ้–‹ใ™ใ‚‹ใ‚ตใƒผใƒ“ใ‚นใ€ใƒขใ‚ธใƒฅใƒผใƒซใ€ใ‚จใƒณใƒ†ใ‚ฃใƒ†ใ‚ฃใ‚’้ธๆŠž;
  • ใƒชใ‚นใƒˆใซๅซใ‚ใ‚‹ใƒ•ใ‚ฃใƒผใƒซใƒ‰ใ‚’้ธๆŠž;
  • ใƒชใ‚นใƒˆใƒšใƒผใ‚ธ๏ผˆใƒšใƒผใ‚ธใƒใƒผใ‚ทใƒงใƒณไป˜ใใ‚ฐใƒชใƒƒใƒ‰๏ผ‰ใŠใ‚ˆใณไฝœๆˆ/็ทจ้›†ใƒ•ใ‚ฉใƒผใƒ ใ‚’่‡ชๅ‹•็”Ÿๆˆ;
  • ใƒ•ใƒญใƒณใƒˆใ‚จใƒณใƒ‰ใงไฝฟ็”จใ™ใ‚‹ HttpClient ใ‚ฏใƒฉใ‚นใ‚’็”Ÿๆˆ;
  • ๅฟ…่ฆใชใ™ในใฆใฎ REST API๏ผˆPOSTใ€PUTใ€PATCHใ€DELETEใ€GET๏ผ‰ใ‚’ไฝœๆˆ;
  • Commands ใŠใ‚ˆใณ Queries ใจใใ‚Œใซๅฏพๅฟœใ™ใ‚‹ Handlers ใ‚’ไฝœๆˆใ—ใ€ใƒ‡ใƒผใ‚ฟใƒ™ใƒผใ‚นใพใง้€ฃๆบใ—ใฆ CRUD ใฎๅ…จใƒ•ใƒญใƒผใ‚’ไฟ่จผใ€‚

ใ“ใฎใ‚ณใƒžใƒณใƒ‰ใซใ‚ˆใ‚Šใ€ใ‚คใƒณใ‚ฟใƒผใƒ•ใ‚งใƒผใ‚นๅฑคใ€APIใ€ใƒ“ใ‚ธใƒใ‚นใƒญใ‚ธใƒƒใ‚ฏใ‚’ๆ‰‹ๅ‹•ใงๆ›ธใใ“ใจใชใใ€ๆฉŸ่ƒฝ็š„ใชใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใ‚’ๅพ—ใ‚‹ใ“ใจใŒใงใใ€ใ‚ตใƒผใƒ“ใ‚น้–“ใฎๆจ™ๆบ–ใจไธ€่ฒซๆ€งใ‚’็ถญๆŒใงใใพใ™ใ€‚

ใ“ใฎใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใงใฏใ€ๆฌกใฎใ‚จใƒณใƒ†ใ‚ฃใƒ†ใ‚ฃใซๅฏพใ—ใฆ็ตฑๅˆใƒšใƒผใ‚ธใ‚’็”Ÿๆˆใงใใพใ™๏ผš

  • Catalog.Merchandising.Category
  • Catalog.Merchandising.Product
  • Sales.ProductSnapshot

ใƒšใƒผใ‚ธใ€APIใ€ใŠใ‚ˆใณ Commands/Queries ใ‚’็”Ÿๆˆใ—ใŸๅพŒใ€ใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใฏใƒ•ใƒญใƒณใƒˆใ‚จใƒณใƒ‰ใจใƒใƒƒใ‚ฏใ‚จใƒณใƒ‰้–“ใงๅฎŒๅ…จใซ้€ฃๆบๅฏ่ƒฝใจใชใ‚Šใ€ใ™ในใฆใฎใƒใƒชใƒ‡ใƒผใ‚ทใƒงใƒณใ€ใƒซใƒผใƒˆใ€ใŠใ‚ˆใณๆฐธ็ถšๅŒ–ใฏ Lino CLI ใซใ‚ˆใฃใฆ่‡ชๅ‹•็š„ใซ่จญๅฎšใ•ใ‚Œใพใ™ใ€‚

ใƒ‡ใƒผใ‚ฟใƒ™ใƒผใ‚นใƒžใ‚คใ‚ฐใƒฌใƒผใ‚ทใƒงใƒณใฎไฝœๆˆ

ใ™ในใฆใฎใ‚จใƒณใƒ†ใ‚ฃใƒ†ใ‚ฃใŒไฝœๆˆใ•ใ‚ŒใŸใฎใงใ€ๅฎš็พฉใ•ใ‚ŒใŸใƒขใƒ‡ใƒซใซๅพ“ใฃใฆใƒ‡ใƒผใ‚ฟใƒ™ใƒผใ‚นใ‚’ไฝœๆˆใพใŸใฏๆ›ดๆ–ฐใ™ใ‚‹ใŸใ‚ใฎใƒžใ‚คใ‚ฐใƒฌใƒผใ‚ทใƒงใƒณใ‚’็”Ÿๆˆใ™ใ‚‹ๆ™‚ใงใ™ใ€‚ Lino CLI ใฏใ“ใฎใƒ—ใƒญใ‚ปใ‚นใ‚’่‡ชๅ‹•ๅŒ–ใ—ใ€Entity Framework ใจ็ตฑๅˆใ—ใฆๅฎŸ่กŒๅฏ่ƒฝใชใ‚นใ‚ฏใƒชใƒ—ใƒˆใ‚’ไฝœๆˆใ—ใพใ™ใ€‚

ๆ–ฐใ—ใ„ใƒžใ‚คใ‚ฐใƒฌใƒผใ‚ทใƒงใƒณใ‚’ไฝœๆˆใ™ใ‚‹ใซใฏใ€ๆฌกใฎใ‚ณใƒžใƒณใƒ‰ใ‚’ๅฎŸ่กŒใ—ใฆใใ ใ•ใ„๏ผš

lino database migrations new

ๅฎŸ่กŒไธญใซไปฅไธ‹ใ‚’่กŒใ†ๅฟ…่ฆใŒใ‚ใ‚Šใพใ™๏ผš

  • ใƒžใ‚คใ‚ฐใƒฌใƒผใ‚ทใƒงใƒณใ‚’้ฉ็”จใ™ใ‚‹ใ‚ตใƒผใƒ“ใ‚นใจใƒขใ‚ธใƒฅใƒผใƒซใ‚’้ธๆŠžใ™ใ‚‹๏ผ›
  • ใƒžใ‚คใ‚ฐใƒฌใƒผใ‚ทใƒงใƒณใฎ่ชฌๆ˜Žใ‚’ๅ…ฅๅŠ›ใ™ใ‚‹ใ€‚ไพ‹๏ผš"Initial migration"ใ€‚

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Question                                  โ”‚ Answer            โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Select a service:                         โ”‚ Catalog           โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Select a module:                          โ”‚ Merchandising     โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Current version of the service:           โ”‚ 0.1.0             โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚ Provide a description for this migration: โ”‚ Initial migration โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

็ขบ่ชใ™ใ‚‹ใจใ€Lino CLI ใฏไปฅไธ‹ใ‚’็”Ÿๆˆใ—ใพใ™๏ผš

  • ใ‚ตใƒผใƒ“ใ‚นใฎ็พๅœจใƒใƒผใ‚ธใƒงใƒณใซๅฏพๅฟœใ™ใ‚‹ๆ–ฐใ—ใ„ใƒ‡ใƒผใ‚ฟใƒ™ใƒผใ‚นใƒžใ‚คใ‚ฐใƒฌใƒผใ‚ทใƒงใƒณ๏ผ›
  • ๅฏพๅฟœใ™ใ‚‹ SQL ใ‚นใ‚ฏใƒชใƒ—ใƒˆใŒ Infrastructure.Persistence ใƒฌใ‚คใƒคใƒผใซไฝœๆˆใ•ใ‚Œใ€ใƒ‘ใ‚นใฏ /scripts/<version>/<ใƒ•ใ‚กใ‚คใƒซๅ>๏ผ›
  • ใ‚ตใƒผใƒ“ใ‚นใฎๅฑฅๆญดใซใƒžใ‚คใ‚ฐใƒฌใƒผใ‚ทใƒงใƒณใฎใƒใƒผใ‚ธใƒงใƒณใ‚’่จ˜้Œฒใ—ใ€่ฟฝ่ทกๆ€งใจไธ€่ฒซๆ€งใ‚’ไฟ่จผใ€‚

ใƒ™ใ‚นใƒˆใƒ—ใƒฉใ‚ฏใƒ†ใ‚ฃใ‚น๏ผš

  • ใƒ‡ใƒผใ‚ฟใƒขใƒ‡ใƒซใซๅค‰ๆ›ดใŒใ‚ใ‚‹ใŸใณใซๆ–ฐใ—ใ„ใƒžใ‚คใ‚ฐใƒฌใƒผใ‚ทใƒงใƒณใ‚’ไฝœๆˆใ™ใ‚‹๏ผˆๆ–ฐใ—ใ„ใ‚จใƒณใƒ†ใ‚ฃใƒ†ใ‚ฃใ€ใƒ—ใƒญใƒ‘ใƒ†ใ‚ฃใ€้–ขไฟ‚ใฎๅค‰ๆ›ดใ‚’ๅซใ‚€๏ผ‰๏ผ›
  • ๆœฌ็•ช็’ฐๅขƒใซ้ฉ็”จใ™ใ‚‹ๅ‰ใซ็”Ÿๆˆใ•ใ‚ŒใŸ SQL ใ‚นใ‚ฏใƒชใƒ—ใƒˆใ‚’็ขบ่ชใ™ใ‚‹๏ผ›
  • ใƒ‡ใƒผใ‚ฟใƒ™ใƒผใ‚นใฎใƒใƒผใ‚ธใƒงใƒณ็ฎก็†ใ‚’ใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใฎใƒใƒผใ‚ธใƒงใƒณใจๅŒๆœŸใ•ใ›ใ€็ซถๅˆใ‚„ๅŒๆœŸๅ•้กŒใ‚’ๅ›ž้ฟใ™ใ‚‹ใ€‚

ใ“ใฎใƒ•ใƒญใƒผใซๅพ“ใ†ใ“ใจใงใ€ใƒ‡ใƒผใ‚ฟใƒ™ใƒผใ‚นใŒๅธธใซ Lino CLI ใงๅฎš็พฉใ•ใ‚ŒใŸใƒ‰ใƒกใ‚คใƒณใƒขใƒ‡ใƒซใจไธ€่‡ดใ—ใ€ใ‚จใƒฉใƒผใ‚’ๆธ›ใ‚‰ใ—ใ€ใƒกใƒณใƒ†ใƒŠใƒณใ‚นใ‚’็ฐก็ด ๅŒ–ใงใใพใ™ใ€‚

Docker ใ‚คใƒกใƒผใ‚ธใฎ็”Ÿๆˆ

็‰นๅฎšใƒใƒผใ‚ธใƒงใƒณใฎใ‚ณใƒผใƒ‰็”ŸๆˆใŒๅฎŒไบ†ใ—ใ€ใƒ†ใ‚นใƒˆใ‚’ๅฎŸๆ–ฝใ—ใ€ๅฟ…่ฆใชใƒ“ใ‚ธใƒใ‚นใƒซใƒผใƒซใ‚’ใ™ในใฆๅฎŸ่ฃ…ใ—ใŸๅพŒใ€ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใฎใ‚ตใƒผใƒ“ใ‚นใŠใ‚ˆใณใ‚ฆใ‚งใƒ–ใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใฎ Docker ใ‚คใƒกใƒผใ‚ธใ‚’็”Ÿๆˆใ—ใ€ใ‚ณใƒณใƒ†ใƒŠใƒฌใ‚ธใ‚นใƒˆใƒชใซๅ…ฌ้–‹ใ™ใ‚‹ใ“ใจใŒใงใใพใ™ใ€‚

Lino CLI ใฏใ€ๆฌกใฎใ‚ณใƒžใƒณใƒ‰ใงใ“ใฎใƒ—ใƒญใ‚ปใ‚นใ‚’็ฐก็•ฅๅŒ–ใ—ใพใ™๏ผš

lino build

ๅฎŸ่กŒใ™ใ‚‹ใจใ€ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆๅ†…ใฎๅˆฉ็”จๅฏ่ƒฝใชใ™ในใฆใฎใ‚ตใƒผใƒ“ใ‚นใŠใ‚ˆใณใ‚ฆใ‚งใƒ–ใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใจใใฎ็พๅœจใฎใƒใƒผใ‚ธใƒงใƒณใฎไธ€่ฆงใŒ่กจ็คบใ•ใ‚Œใพใ™๏ผš

Select the services or web applications you want to include in the build:

> [ ] Services
    [ ] Catalog |0.1.0|
    [ ] Sales |0.1.0|
    [ ] Security |0.1.0|
    [ ] Stock |0.1.0|
  [ ] Web applications
    [ ] Backoffice |0.1.0|

1ใคใพใŸใฏ่ค‡ๆ•ฐใฎใ‚ตใƒผใƒ“ใ‚นใ‚„ใ‚ฆใ‚งใƒ–ใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใ‚’้ธๆŠžใ—ใฆใ€ๅŒๆ™‚ใซใ‚คใƒกใƒผใ‚ธใ‚’็”Ÿๆˆใงใใพใ™ใ€‚ๅฟ…่ฆใช้ …็›ฎใซใƒใ‚งใƒƒใ‚ฏใ‚’ๅ…ฅใ‚Œใฆใใ ใ•ใ„ใ€‚

ๆฌกใซใ€็”Ÿๆˆใ•ใ‚Œใ‚‹ใ‚คใƒกใƒผใ‚ธใฎใƒใƒผใ‚ธใƒงใƒณใ‚’ใฉใฎใ‚ˆใ†ใซๆ›ดๆ–ฐใ™ใ‚‹ใ‹ใ‚’้ธๆŠžใ—ใพใ™ใ€‚ๅˆฉ็”จๅฏ่ƒฝใชใ‚ชใƒ—ใ‚ทใƒงใƒณใฏไปฅไธ‹ใฎ้€šใ‚Šใงใ™๏ผš

  • ็พๅœจใฎใƒใƒผใ‚ธใƒงใƒณใ‚’็ถญๆŒ โ€“ ๆ—ขๅญ˜ใฎใƒใƒผใ‚ธใƒงใƒณใ‚’ๅค‰ๆ›ดใ—ใพใ›ใ‚“๏ผ›
  • Patch โ€“ ใƒ‘ใƒƒใƒใƒใƒผใ‚ธใƒงใƒณใ‚’ๅข—ๅŠ ๏ผˆไพ‹: 0.1.0 โ†’ 0.1.1๏ผ‰๏ผ›
  • Minor โ€“ ใƒžใ‚คใƒŠใƒผใƒใƒผใ‚ธใƒงใƒณใ‚’ๅข—ๅŠ ๏ผˆไพ‹: 0.1.0 โ†’ 0.2.0๏ผ‰๏ผ›
  • Major โ€“ ใƒกใ‚ธใƒฃใƒผใƒใƒผใ‚ธใƒงใƒณใ‚’ๅข—ๅŠ ๏ผˆไพ‹: 0.1.0 โ†’ 1.0.0๏ผ‰ใ€‚

ใ‚ตใƒผใƒ“ใ‚นใ‚’้ธๆŠžใ—ใ€ใƒใƒผใ‚ธใƒงใƒณใฎๅข—ๅŠ ๆ–นๆณ•ใ‚’ๆŒ‡ๅฎšใ™ใ‚‹ใจใ€Lino CLI ใฏไปฅไธ‹ใ‚’ๅฎŸ่กŒใ—ใพใ™๏ผš

  • ๅ„ใ‚ตใƒผใƒ“ใ‚นใŠใ‚ˆใณใ‚ฆใ‚งใƒ–ใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใฎใ‚ณใƒผใƒ‰ใ‚’ใƒ“ใƒซใƒ‰๏ผ›
  • ๅฏพๅฟœใ™ใ‚‹ Docker ใ‚คใƒกใƒผใ‚ธใ‚’็”Ÿๆˆ๏ผ›
  • ๆŒ‡ๅฎšใ•ใ‚ŒใŸใƒใƒผใ‚ธใƒงใƒณใงใ‚ฟใ‚ฐใ‚’ไป˜ไธŽ๏ผ›
  • ใ‚ณใƒณใƒ†ใƒŠใƒฌใ‚ธใ‚นใƒˆใƒชใซๅ…ฌ้–‹ใงใใ‚‹ใ‚ˆใ†ใซใ‚คใƒกใƒผใ‚ธใ‚’ๆไพ›ใ€‚

ใƒ—ใƒญใ‚ปใ‚นใฎๆœ€ๅพŒใซใ€ใ™ในใฆใฎใ‚ตใƒผใƒ“ใ‚นใŠใ‚ˆใณใ‚ฆใ‚งใƒ–ใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใŒ้ธๆŠžใ•ใ‚Œใฆใ„ใ‚‹ๅ ดๅˆใ€็”Ÿๆˆใ•ใ‚Œใ‚‹ใ‚คใƒกใƒผใ‚ธใฏไปฅไธ‹ใฎๆง‹้€ ใซใชใ‚Šใพใ™๏ผš

  • my-app/services/catalog-host - tag: 0.1.0
  • my-app/services/sales-api - tag: 0.1.0
  • my-app/services/security-api - tag: 0.1.0
  • my-app/services/stock-api - tag: 0.1.0
  • my-app/webapps/backoffice - tag: 0.1.0

ๆณจๆ„๏ผš ใ“ใฎใƒ—ใƒญใ‚ปใ‚นใฏใ€ใ‚ณใƒผใƒ‰ใจ Docker ใ‚คใƒกใƒผใ‚ธใฎใƒใƒผใ‚ธใƒงใƒณใฎๆ•ดๅˆๆ€งใ‚’ไฟ่จผใ—ใ€่ค‡ๆ•ฐใฎ็’ฐๅขƒใงใฎใƒ‡ใƒ—ใƒญใ‚คใจไฟๅฎˆใ‚’ๅฎนๆ˜“ใซใ™ใ‚‹ใจใจใ‚‚ใซใ€ๅ„ใ‚ตใƒผใƒ“ใ‚นใ‚’็‹ฌ็ซ‹ใ—ใŸใ‚ณใƒณใƒ†ใƒŠใง้š”้›ขใ—ใฆๅฎŸ่กŒใงใใ‚‹ใ‚ˆใ†ใซใ—ใพใ™ใ€‚

ใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใงใฎใƒใƒผใ‚ธใƒงใƒณไฝœๆˆ

ใ‚ตใƒผใƒ“ใ‚นใ‚„ใ‚ฆใ‚งใƒ–ใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใฎๆ–ฐใ—ใ„ใƒใƒผใ‚ธใƒงใƒณใ‚’ๅข—ๅˆ†ใ™ใ‚‹ไฝœๆฅญใฏใ€Lino CLI ใง็ฐกๅ˜ใ‹ใค้›†ไธญ็ฎก็†ใ•ใ‚ŒใŸใƒ—ใƒญใ‚ปใ‚นใงใ™ใ€‚ๆฌกใฎใ‚ณใƒžใƒณใƒ‰ใ‚’ๅฎŸ่กŒใ—ใฆใใ ใ•ใ„๏ผš

lino version bump

Docker ใ‚คใƒกใƒผใ‚ธใฎ็”ŸๆˆใจๅŒๆง˜ใซใ€ใ“ใฎใ‚ณใƒžใƒณใƒ‰ใ‚’ๅฎŸ่กŒใ™ใ‚‹ใจใ€ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆๅ†…ใฎใ™ในใฆใฎใ‚ตใƒผใƒ“ใ‚นใŠใ‚ˆใณใ‚ฆใ‚งใƒ–ใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใฎๅฎŒๅ…จใชใƒชใ‚นใƒˆใŒ่กจ็คบใ•ใ‚Œใพใ™ใ€‚ ้ธๆŠžใ—ใŸ้ …็›ฎใฎใฟใŒใƒใƒผใ‚ธใƒงใƒณใ‚ขใƒƒใƒ—ใ•ใ‚Œใ€ใใฎไป–ใฏๅค‰ๆ›ดใ•ใ‚Œใพใ›ใ‚“ใ€‚

Select the services or web applications that will have version changes:

> [ ] Services
    [ ] Catalog |0.1.0|
    [ ] Sales |0.1.0|
    [ ] Security |0.1.0|
    [ ] Stock |0.1.0|
  [ ] Web applications
    [ ] Backoffice |0.1.0|

ๅฟ…่ฆใช้ …็›ฎใ‚’้ธๆŠžใ—ใŸๅพŒใ€ใƒใƒผใ‚ธใƒงใƒณใฎๅข—ๅˆ†ใ‚ฟใ‚คใƒ—ใ‚’้ธๆŠžใ™ใ‚‹ใ‚ˆใ†ๆฑ‚ใ‚ใ‚‰ใ‚Œใพใ™ใ€‚ๅˆฉ็”จๅฏ่ƒฝใชใ‚ชใƒ—ใ‚ทใƒงใƒณใฏๆฌกใฎ้€šใ‚Šใงใ™๏ผš

  • Patch โ€“ ๆฉŸ่ƒฝใซๅฝฑ้Ÿฟใ‚’ไธŽใˆใชใ„ๅฐใ•ใชไฟฎๆญฃ;
  • Minor โ€“ ไปฅๅ‰ใฎใƒใƒผใ‚ธใƒงใƒณใจไบ’ๆ›ๆ€งใฎใ‚ใ‚‹ๆ–ฐๆฉŸ่ƒฝใฎ่ฟฝๅŠ ;
  • Major โ€“ ไปฅๅ‰ใฎใƒใƒผใ‚ธใƒงใƒณใจใฎไบ’ๆ›ๆ€งใ‚’็ ดใ‚‹ๅฏ่ƒฝๆ€งใฎใ‚ใ‚‹ๅค‰ๆ›ด.

ใ‚ตใƒผใƒ“ใ‚นใŠใ‚ˆใณใ‚ฆใ‚งใƒ–ใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณใฎใƒใƒผใ‚ธใƒงใƒณใฏใ€ไปฅไธ‹ใซ็›ดๆŽฅๅฝฑ้Ÿฟใ—ใพใ™๏ผš

  • Docker ใ‚คใƒกใƒผใ‚ธใฎใ‚ฟใ‚ฐ;
  • ใƒ‡ใƒผใ‚ฟใƒ™ใƒผใ‚นใƒžใ‚คใ‚ฐใƒฌใƒผใ‚ทใƒงใƒณใง็”Ÿๆˆใ•ใ‚Œใ‚‹ใ‚นใ‚ฏใƒชใƒ—ใƒˆใ‚’ๆ ผ็ดใ™ใ‚‹ใƒ•ใ‚ฉใƒซใƒ€;
  • ใƒชใƒชใƒผใ‚น็ฎก็†ใŠใ‚ˆใณใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆๅฑฅๆญด.

ใ“ใ‚Œใงใ€Lino CLI ใ‚’ไฝฟ็”จใ—ใฆ Web ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใ‚’ๆง‹็ฏ‰ใ™ใ‚‹ใŸใ‚ใฎใ™ในใฆใฎไธป่ฆใ‚ณใƒžใƒณใƒ‰ใฎใ‚นใƒ†ใƒƒใƒ—ใƒใ‚คใ‚นใƒ†ใƒƒใƒ—ใ‚ฌใ‚คใƒ‰ใŒๅฎŒไบ†ใงใ™ใ€‚ใ‚คใƒณใ‚นใƒˆใƒผใƒซใ€ใ‚ตใƒผใƒ“ใ‚นใ€ใ‚จใƒณใƒ†ใ‚ฃใƒ†ใ‚ฃใ€ใ‚คใƒ™ใƒณใƒˆใ€ใƒšใƒผใ‚ธใฎไฝœๆˆใ‹ใ‚‰ใ€Docker ใ‚คใƒกใƒผใ‚ธ็”ŸๆˆใŠใ‚ˆใณใƒใƒผใ‚ธใƒงใƒณ็ฎก็†ใพใงๅซใพใ‚Œใฆใ„ใพใ™ใ€‚

่ฉณ็ดฐใชใƒใƒฅใƒผใƒˆใƒชใ‚ขใƒซใ€ๅฎŸ่ทตใƒ‡ใƒขใ€ใƒ„ใƒผใƒซใฎไฝฟใ„ๆ–นใฎใƒ’ใƒณใƒˆใ‚’็ขบ่ชใ™ใ‚‹ใซใฏใ€YouTube ใƒใƒฃใƒณใƒใƒซใ‚’ใœใฒใ”่ฆงใใ ใ•ใ„ใ€‚ๅŸบๆœฌๆ“ไฝœใ‹ใ‚‰้ซ˜ๅบฆใชๆฉŸ่ƒฝใพใงใ‚ซใƒใƒผใ—ใฆใ„ใพใ™ใ€‚

処理されていないエラーが発生しました。 再読み込み ๐Ÿ—™