REST āĻāĻŦāĻ‚ āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•āĻĢā§āĻ˛ā§‹ āĻ‡āĻžā§āĻœāĻŋāĻ¨ā§‡āĻ° āĻ‰āĻĒāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°ā§‡ āĻ¸āĻšāĻœ āĻ…āĻ°ā§āĻ•ā§‡āĻ¸ā§āĻŸā§āĻ°ā§‡āĻļāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ•āĻžāĻŽā§āĻ¨ā§āĻĄāĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡ (āĻ•ā§‹āĻ¨ āĻœāĻžāĻ­āĻž āĻ¨ā§‡āĻ‡)

āĻšā§‡ āĻšāĻžāĻŦāĻ°! āĻ†āĻŽāĻŋ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻŸāĻŋāĻ° āĻ…āĻ¨ā§āĻŦāĻžāĻĻ āĻ†āĻĒāĻ¨āĻžāĻ° āĻĻā§ƒāĻˇā§āĻŸāĻŋ āĻ†āĻ•āĻ°ā§āĻˇāĻŖ āĻ•āĻ°āĻ›āĻŋ "āĻ•āĻžāĻŽā§āĻ¨ā§āĻĄāĻžāĻ•ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ¸āĻšāĻœ REST-āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋāĻ• āĻ…āĻ°ā§āĻ•ā§‡āĻ¸ā§āĻŸā§āĻ°ā§‡āĻļāĻ¨ āĻāĻŦāĻ‚ āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•āĻĢā§āĻ˛ā§‹ āĻ‡āĻžā§āĻœāĻŋāĻ¨ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§āĻ¨ (āĻœāĻžāĻ­āĻž āĻ¸ā§āĻĒāĻ°ā§āĻļ āĻ¨āĻž āĻ•āĻ°ā§‡)" Bernd RÃŧcker āĻĻā§āĻŦāĻžāĻ°āĻž.

07.07.2020/XNUMX/XNUMX, āĻ…āĻ¨ā§āĻŦāĻžāĻĻ āĻĒā§āĻ°āĻŦāĻ¨ā§āĻ§ āĻŦāĻžāĻ°ā§āĻ¨ā§āĻĄ āĻ°ā§āĻ•āĻžāĻ°

REST āĻāĻŦāĻ‚ āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•āĻĢā§āĻ˛ā§‹ āĻ‡āĻžā§āĻœāĻŋāĻ¨ā§‡āĻ° āĻ‰āĻĒāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°ā§‡ āĻ¸āĻšāĻœ āĻ…āĻ°ā§āĻ•ā§‡āĻ¸ā§āĻŸā§āĻ°ā§‡āĻļāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ•āĻžāĻŽā§āĻ¨ā§āĻĄāĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡ (āĻ•ā§‹āĻ¨ āĻœāĻžāĻ­āĻž āĻ¨ā§‡āĻ‡)

āĻ†āĻŽāĻŋ āĻĒā§āĻ°āĻžāĻ¯āĻŧāĻ‡ āĻ¨āĻ¨-āĻœāĻžāĻ­āĻž āĻ˛ā§‹āĻ•ā§‡āĻĻā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻŽāĻžāĻ‡āĻ•ā§āĻ°ā§‹āĻ¸āĻžāĻ°ā§āĻ­āĻŋāĻ¸ āĻ†āĻ°ā§āĻ•āĻŋāĻŸā§‡āĻ•āĻšāĻžāĻ° āĻ¨āĻŋāĻ¯āĻŧā§‡ āĻ†āĻ˛ā§‹āĻšāĻ¨āĻž āĻ•āĻ°āĻŋ: C# āĻĄā§‡āĻ­ā§‡āĻ˛āĻĒāĻžāĻ°, Node.JS/JavaScript āĻĄā§‡āĻ­ā§‡āĻ˛āĻĒāĻžāĻ°, āĻ…āĻĨāĻŦāĻž Golang aficionadosāĨ¤ āĻ¤āĻžāĻĻā§‡āĻ° āĻ¸āĻ•āĻ˛ā§‡āĻ°āĻ‡ āĻāĻ‡ āĻ¸āĻ¤ā§āĻ¯ā§‡āĻ° āĻŽā§āĻ–ā§‹āĻŽā§āĻ–āĻŋ āĻšāĻ¯āĻŧ āĻ¯ā§‡ āĻ¤āĻžāĻĻā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻŽāĻžāĻ‡āĻ•ā§āĻ°ā§‹āĻ¸āĻžāĻ°ā§āĻ­āĻŋāĻ¸ āĻ†āĻ°ā§āĻ•āĻŋāĻŸā§‡āĻ•āĻšāĻžāĻ°ā§‡ āĻāĻ•āĻŸāĻŋ āĻ…āĻ°ā§āĻ•ā§‡āĻ¸ā§āĻŸā§āĻ°ā§‡āĻļāĻ¨ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻŦāĻž āĻ•āĻ°ā§āĻŽāĻĒā§āĻ°āĻŦāĻžāĻšāĻ•ā§‡ āĻ¸ā§āĻŸā§āĻ°ā§€āĻŽāĻ˛āĻžāĻ‡āĻ¨ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻŦāĻ‚ āĻ…āĻ°ā§āĻĄāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻ•ā§āĻˇāĻŽāĻ¤āĻž, āĻŸāĻžāĻ‡āĻŽāĻ†āĻ‰āĻŸ āĻĒāĻ°āĻŋāĻšāĻžāĻ˛āĻ¨āĻž, āĻ¸āĻžāĻ—āĻž āĻāĻŦāĻ‚ āĻ•ā§āĻˇāĻ¤āĻŋāĻĒā§‚āĻ°āĻŖ āĻ˛ā§‡āĻ¨āĻĻā§‡āĻ¨ā§‡āĻ° āĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻ…āĻ°ā§āĻœāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻŸā§āĻ˛ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨āĨ¤

āĻ¸āĻ™ā§āĻ—ā§‡ BPM āĻĒā§āĻ˛ā§āĻ¯āĻžāĻŸāĻĢāĻ°ā§āĻŽ āĻ•āĻžāĻŽā§āĻ¨ā§āĻĄāĻž āĻĨā§‡āĻ•ā§‡ āĻ“āĻĒā§‡āĻ¨ āĻ¸ā§‹āĻ°ā§āĻ¸ āĻāĻ‡ āĻ§āĻ°āĻ¨ā§‡āĻ° āĻ•āĻžāĻœā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻŽāĻšāĻžāĻ¨āĨ¤ āĻĄā§‡āĻ­ā§‡āĻ˛āĻĒāĻžāĻ° āĻŦāĻ¨ā§āĻ§ā§āĻ¤ā§āĻŦ āĻĒāĻŖā§āĻ¯ā§‡āĻ° āĻ…āĻ¨ā§āĻ¯āĻ¤āĻŽ āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯āĨ¤ āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻāĻ° āĻĄāĻ•ā§āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāĻ¨ āĻĻā§‡āĻ–ā§‡āĻ¨, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻ§āĻžāĻ°āĻŖāĻž āĻĒā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻ¯ā§‡ āĻ•āĻžāĻŽā§āĻ¨ā§āĻĄāĻžāĻ° "āĻŦāĻ¨ā§āĻ§ā§āĻ¤ā§āĻŦ" āĻŽā§‚āĻ˛āĻ¤ āĻœāĻžāĻ­āĻž āĻŦāĻŋāĻ•āĻžāĻļāĻ•āĻžāĻ°ā§€āĻĻā§‡āĻ° āĻ˛āĻ•ā§āĻˇā§āĻ¯ āĻ•āĻ°ā§‡āĨ¤ āĻĒā§āĻ˛ā§āĻ¯āĻžāĻŸāĻĢāĻ°ā§āĻŽāĻŸāĻŋ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ¨āĻŋāĻœāĻ¸ā§āĻŦ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻāĻŦāĻ‚ āĻāĻ•ā§āĻ¸āĻŸā§‡āĻ¨āĻļāĻ¨āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ¸āĻ‚āĻ¯ā§āĻ•ā§āĻ¤ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ…āĻ¨ā§‡āĻ•āĻ—ā§āĻ˛āĻŋ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ āĻ¸āĻ°āĻŦāĻ°āĻžāĻš āĻ•āĻ°ā§‡, āĻ¤āĻŦā§‡ āĻāĻŸāĻŋ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻœāĻžāĻ­āĻžāĻ¤ā§‡ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤ āĻāĻŸāĻž āĻ•āĻŋ āĻ¸āĻ¤ā§āĻ¯āĻŋ?

āĻ¨āĻž! āĻ†āĻ¸āĻ˛ā§‡, āĻ†āĻĒāĻ¨āĻŋ āĻ¸āĻšāĻœā§‡āĻ‡ āĻ•āĻžāĻŽā§āĻ¨ā§āĻĄāĻž āĻšāĻžāĻ˛āĻžāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻ•ā§‹āĻ¨ā§‹ āĻœāĻžāĻ­āĻž āĻœā§āĻžāĻžāĻ¨ āĻ›āĻžāĻĄāĻŧāĻžāĻ‡ āĻāĻŦāĻ‚ āĻ†āĻĒāĻ¨āĻžāĻ° āĻĒāĻ›āĻ¨ā§āĻĻā§‡āĻ° āĻ¯ā§‡āĻ•ā§‹āĻ¨ā§‹ āĻ­āĻžāĻˇāĻžāĻ¯āĻŧ āĻ•ā§‹āĻĄā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻ°ā§āĻ•āĻŋāĻŸā§‡āĻ•āĻšāĻžāĻ° āĻ¸ā§‡āĻŸ āĻ†āĻĒ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĨ¤ āĻāĻ‡ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§‡, āĻ†āĻŽāĻ°āĻž āĻĻā§‡āĻ–āĻŦ:

  • āĻŽā§ŒāĻ˛āĻŋāĻ• āĻ¸ā§āĻĨāĻžāĻĒāĻ¤ā§āĻ¯;
  • REST API
  • āĻœāĻžāĻ­āĻž āĻŦā§āĻ¯āĻ¤ā§€āĻ¤ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ­āĻžāĻˇāĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻ•ā§āĻ˛āĻžāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļ;
  • āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ C# āĻāĻŦāĻ‚ Node.JS āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡;
  • āĻ•āĻžāĻŽā§āĻ¨ā§āĻĄāĻž āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻļā§āĻ°ā§ āĻ•āĻ°āĻžāĻ° āĻ‰āĻĒāĻžāĻ¯āĻŧ (āĻĄāĻ•āĻžāĻ° āĻŦāĻž āĻŸāĻŽāĻ•ā§āĻ¯āĻžāĻŸ)āĨ¤

āĻ¸ā§āĻĨāĻžāĻĒāĻ¤ā§āĻ¯

āĻ•āĻžāĻŽā§āĻ¨ā§āĻĄāĻž āĻœāĻžāĻ­āĻžāĻ¤ā§‡ āĻ˛ā§‡āĻ–āĻž āĻāĻŦāĻ‚ āĻšāĻžāĻ˛āĻžāĻ¨ā§‹āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻœāĻžāĻ­āĻž āĻ­āĻžāĻ°ā§āĻšā§āĻ¯āĻŧāĻžāĻ˛ āĻŽā§‡āĻļāĻŋāĻ¨ (JVM) āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨āĨ¤ āĻ•āĻžāĻŽā§āĻ¨ā§āĻĄāĻž āĻāĻ•āĻŸāĻŋ REST API āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°ā§‡ āĻ¯āĻž āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻĒāĻ›āĻ¨ā§āĻĻā§‡āĻ° āĻ¯ā§‡āĻ•ā§‹āĻ¨ā§‹ āĻ­āĻžāĻˇāĻžāĻ¯āĻŧ āĻ˛āĻŋāĻ–āĻ¤ā§‡ āĻāĻŦāĻ‚ āĻ•āĻžāĻŽā§āĻ¨ā§āĻĄāĻžāĻ° āĻ¸āĻžāĻĨā§‡ REST āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧ:

REST āĻāĻŦāĻ‚ āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•āĻĢā§āĻ˛ā§‹ āĻ‡āĻžā§āĻœāĻŋāĻ¨ā§‡āĻ° āĻ‰āĻĒāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°ā§‡ āĻ¸āĻšāĻœ āĻ…āĻ°ā§āĻ•ā§‡āĻ¸ā§āĻŸā§āĻ°ā§‡āĻļāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ•āĻžāĻŽā§āĻ¨ā§āĻĄāĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡ (āĻ•ā§‹āĻ¨ āĻœāĻžāĻ­āĻž āĻ¨ā§‡āĻ‡)

āĻ•āĻžāĻŽā§āĻ¨ā§āĻĄāĻžāĻ¯āĻŧ āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•āĻĢā§āĻ˛ā§‹āĻ—ā§āĻ˛āĻŋ BPMN-āĻ āĻ¸āĻ‚āĻœā§āĻžāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡, āĻ¯āĻž āĻŽā§‚āĻ˛āĻ¤ āĻāĻ•āĻŸāĻŋ XML āĻĢāĻžāĻ‡āĻ˛āĨ¤ āĻāĻŸāĻŋ āĻĻāĻŋāĻ¯āĻŧā§‡ āĻŽāĻĄā§‡āĻ˛ āĻ•āĻ°āĻž āĻ¯ā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ āĻ•āĻžāĻŽā§āĻ¨ā§āĻĄāĻž āĻŽāĻĄā§‡āĻ˛āĻžāĻ°.

āĻāĻ•āĻŸāĻŋ āĻĒā§‚āĻ°ā§āĻŦ-āĻ¨āĻŋāĻ°ā§āĻŽāĻŋāĻ¤ āĻĄāĻ•āĻžāĻ° āĻ‡āĻŽā§‡āĻœā§‡āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻ•āĻžāĻŽā§āĻ¨ā§āĻĄāĻž āĻšāĻžāĻ˛āĻžāĻ¨ā§‹

āĻ•āĻžāĻŽā§āĻ¨ā§āĻĄāĻž āĻšāĻžāĻ˛āĻžāĻ¨ā§‹āĻ° āĻ¸āĻŦāĻšā§‡āĻ¯āĻŧā§‡ āĻ¸āĻšāĻœ āĻ‰āĻĒāĻžāĻ¯āĻŧ āĻšāĻ˛ āĻĄāĻ•āĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĨ¤ āĻ•āĻžāĻŽā§āĻ¨ā§āĻĄāĻž āĻšāĻžāĻ˛ā§ āĻ•āĻ°āĻžāĻ° āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ āĻ‰āĻĒāĻžāĻ¯āĻŧāĻ—ā§āĻ˛āĻŋ āĻāĻ‡ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§‡ āĻĒāĻ°ā§‡ āĻŦāĻ°ā§āĻŖāĻŋāĻ¤ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ā§ˇ

REST āĻāĻŦāĻ‚ āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•āĻĢā§āĻ˛ā§‹ āĻ‡āĻžā§āĻœāĻŋāĻ¨ā§‡āĻ° āĻ‰āĻĒāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°ā§‡ āĻ¸āĻšāĻœ āĻ…āĻ°ā§āĻ•ā§‡āĻ¸ā§āĻŸā§āĻ°ā§‡āĻļāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ•āĻžāĻŽā§āĻ¨ā§āĻĄāĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡ (āĻ•ā§‹āĻ¨ āĻœāĻžāĻ­āĻž āĻ¨ā§‡āĻ‡)

āĻāĻ‡ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, āĻ¸āĻšāĻœāĻ­āĻžāĻŦā§‡ āĻšāĻžāĻ˛āĻžāĻ¨:

  docker run -d -p 8080:8080 camunda/camunda-bpm-platform:latest

āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ˛āĻŋāĻ¨āĻžāĻ•ā§āĻ¸, āĻœā§‡āĻ­āĻŋāĻāĻŽ āĻŦāĻž āĻŸāĻŽāĻ•ā§āĻ¯āĻžāĻŸāĻ¸ āĻ¨āĻŋāĻ¯āĻŧā§‡ āĻšāĻŋāĻ¨ā§āĻ¤āĻž āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡ āĻ¨āĻžāĨ¤ āĻĄāĻ•āĻžāĻ°āĻĢāĻžāĻ‡āĻ˛ āĻāĻŦāĻ‚ āĻŽā§ŒāĻ˛āĻŋāĻ• āĻĄāĻ•ā§āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāĻ¨ (āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧ āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻ‚āĻ¯ā§‹āĻ— āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļāĻžāĻŦāĻ˛ā§€) āĻāĻ–āĻžāĻ¨ā§‡ āĻ‰āĻĒāĻ˛āĻŦā§āĻ§ āĻ—āĻŋāĻŸāĻšāĻžāĻŦ.

āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻ•āĻžāĻŽā§āĻ¨ā§āĻĄāĻž āĻāĻ¨ā§āĻŸāĻžāĻ°āĻĒā§āĻ°āĻžāĻ‡āĻœ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ āĻšāĻžāĻ˛āĻžāĻ¤ā§‡ āĻšāĻžāĻ¨ āĻ¤āĻŦā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻ¸āĻšāĻœā§‡āĻ‡ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ Dockerfile.

āĻ¯āĻžāĻ‡āĻšā§‹āĻ•, āĻĄāĻ•āĻžāĻ°ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ•āĻžāĻŽā§āĻ¨ā§āĻĄāĻž āĻšāĻžāĻ˛āĻžāĻ¨ā§‹āĻ° āĻāĻ•āĻŸāĻŋ āĻ¨ā§‡āĻ¤āĻŋāĻŦāĻžāĻšāĻ• āĻĻāĻŋāĻ• āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡: āĻ†āĻĒāĻ¨āĻŋ āĻŸāĻŽāĻ•ā§āĻ¯āĻžāĻŸā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ āĻĒāĻžāĻŦā§‡āĻ¨ āĻ¯āĻž āĻ¸āĻ°ā§āĻŦāĻĻāĻž āĻ¸āĻ°ā§āĻŦāĻļā§‡āĻˇ āĻ¸āĻ‚āĻļā§‹āĻ§āĻ¨āĻ—ā§āĻ˛āĻŋ āĻ…āĻ¨ā§āĻ¤āĻ°ā§āĻ­ā§āĻ•ā§āĻ¤ āĻ•āĻ°ā§‡ āĻ¨āĻžāĨ¤ āĻāĻŸāĻŋāĻ•ā§‡ āĻ˜āĻŋāĻ°ā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯, āĻ†āĻĒāĻ¨āĻŋ āĻĒāĻ›āĻ¨ā§āĻĻāĻ¸āĻ‡ āĻŸāĻŽāĻ•ā§āĻ¯āĻžāĻŸ āĻŦāĻŋāĻ¤āĻ°āĻŖā§‡āĻ° āĻ‰āĻĒāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ¨āĻŋāĻœāĻ¸ā§āĻŦ āĻĄāĻ•āĻžāĻ° āĻ‡āĻŽā§‡āĻœ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨, āĻ¯ā§‡āĻŽāĻ¨ āĻāĻ‡ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖā§‡ āĻĻā§‡āĻ–āĻžāĻ¨ā§‹ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡, āĻŦāĻž āĻ¨ā§€āĻšā§‡ āĻŦāĻ°ā§āĻŖāĻŋāĻ¤ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨āĻ—ā§āĻ˛āĻŋāĻ° āĻāĻ•āĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§āĻ¨āĨ¤

āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻŽāĻĄā§‡āĻ˛ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻž

āĻ†āĻ¸ā§āĻ¨ āĻāĻ•āĻŸāĻŋ āĻ•ā§āĻ˛āĻžāĻ¸āĻŋāĻ• āĻŸā§āĻ°āĻŋāĻĒ āĻŦā§āĻ•āĻŋāĻ‚āĻ¯āĻŧā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸āĻžāĻ—āĻž āĻŸā§‡āĻŽāĻĒā§āĻ˛ā§‡āĻŸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻāĻ•āĻŸāĻŋ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻĻā§‡āĻ–āĻŋ āĻ¯ā§‡āĻ–āĻžāĻ¨ā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻ°āĻŋāĻ¤ā§‡ āĻ¤āĻŋāĻ¨āĻŸāĻŋ āĻ…ā§āĻ¯āĻžāĻ•āĻļāĻ¨ āĻŸā§āĻ°āĻŋāĻ—āĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ¨ āĻāĻŦāĻ‚ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§€ āĻŦā§āĻ¯āĻ°ā§āĻĨāĻ¤āĻžāĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡ āĻ¸āĻĢāĻ˛āĻ­āĻžāĻŦā§‡ āĻ¸āĻŽā§āĻĒāĻ¨ā§āĻ¨ āĻ•āĻ°āĻž āĻ…ā§āĻ¯āĻžāĻ•āĻļāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸ā§āĻ¨ā§āĻĻāĻ°āĻ­āĻžāĻŦā§‡ āĻ•ā§āĻˇāĻ¤āĻŋāĻĒā§‚āĻ°āĻŖ āĻĻāĻŋāĻ¤ā§‡ āĻšāĻžāĻ¨āĨ¤ BPMN āĻĢāĻ°ā§āĻŽā§‡ āĻ‰āĻĒāĻ¸ā§āĻĨāĻžāĻĒāĻŋāĻ¤, āĻāĻŸāĻŋ āĻāĻ‡āĻ°āĻ•āĻŽ āĻĻā§‡āĻ–āĻžāĻšā§āĻ›ā§‡:

REST āĻāĻŦāĻ‚ āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•āĻĢā§āĻ˛ā§‹ āĻ‡āĻžā§āĻœāĻŋāĻ¨ā§‡āĻ° āĻ‰āĻĒāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°ā§‡ āĻ¸āĻšāĻœ āĻ…āĻ°ā§āĻ•ā§‡āĻ¸ā§āĻŸā§āĻ°ā§‡āĻļāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ•āĻžāĻŽā§āĻ¨ā§āĻĄāĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡ (āĻ•ā§‹āĻ¨ āĻœāĻžāĻ­āĻž āĻ¨ā§‡āĻ‡)

āĻāĻ–āĻ¨ āĻ†āĻĒāĻ¨āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻŽāĻĄā§‡āĻ˛ āĻ¸ā§āĻĨāĻžāĻĒāĻ¨āĻžāĻ° āĻœāĻ¨ā§āĻ¯ REST API. āĻ§āĻ°āĻž āĻ¯āĻžāĻ• āĻ†āĻĒāĻ¨āĻŋ āĻāĻŸāĻŋāĻ•ā§‡ trip.bpmn āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°ā§āĻ¨ āĻāĻŦāĻ‚ āĻĄāĻ•āĻžāĻ°ā§‡āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻ•āĻžāĻŽā§āĻ¨ā§āĻĄāĻž āĻšāĻžāĻ˛āĻžāĻ¨ āĻ¯āĻžāĻ¤ā§‡ āĻāĻŸāĻŋ āĻ¸ā§āĻĨāĻžāĻ¨ā§€āĻ¯āĻŧ āĻšā§‹āĻ¸ā§āĻŸ:8080-āĻ āĻ‰āĻĒāĻ˛āĻŦā§āĻ§ āĻĨāĻžāĻ•ā§‡:

  curl -w "n" 
-H "Accept: application/json" 
-F "deployment-name=trip" 
-F "enable-duplicate-filtering=true" 
-F "deploy-changed-only=true" 
-F "[email protected]" 
http://localhost:8080/engine-rest/deployment/creat

āĻāĻ–āĻ¨ āĻ†āĻĒāĻ¨āĻŋ āĻšāĻžāĻ˛āĻžāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻ¨āĻ¤ā§āĻ¨ āĻ•āĻ°ā§āĻŽāĻĒā§āĻ°āĻŦāĻžāĻš āĻĻā§ƒāĻˇā§āĻŸāĻžāĻ¨ā§āĻ¤ REST API āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻ¯ā§‡ āĻĄā§‡āĻŸāĻž āĻ†āĻĒāĻ¨āĻŋ āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•āĻĢā§āĻ˛ā§‹ āĻ‡āĻ¨āĻ¸ā§āĻŸā§āĻ¯āĻžāĻ¨ā§āĻ¸ āĻ­ā§‡āĻ°āĻŋāĻ¯āĻŧā§‡āĻŦāĻ˛ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻĻā§‡āĻ–āĻ¤ā§‡ āĻšāĻžāĻ¨ āĻ¤āĻž āĻĒāĻžāĻ¸ āĻ•āĻ°ā§āĻ¨:

  curl 
-H "Content-Type: application/json" 
-X POST 
-d '{"variables":{"someData" : {"value" : "someValue", "type": "String"}},"businessKey" : "12345"}}' 
http://localhost:8080/engine-rest/<!-- -->process-definition/key/<!-- -->FlowingTripBookingSaga<!-- -->/start

āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§€ āĻ†āĻ•āĻ°ā§āĻˇāĻŖā§€āĻ¯āĻŧ āĻĒā§āĻ°āĻļā§āĻ¨ āĻšāĻ˛: āĻ•āĻžāĻŽā§āĻ¨ā§āĻĄāĻž āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻāĻ•āĻŸāĻŋ āĻ—āĻžāĻĄāĻŧāĻŋ āĻŦā§āĻ• āĻ•āĻ°āĻžāĻ° āĻŽāĻ¤ā§‹ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ•āĻ˛ āĻ•āĻ°ā§‡? āĻ•āĻŋāĻ›ā§ āĻŦāĻŋāĻ˛ā§āĻŸ-āĻ‡āĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ•āĻžāĻŽā§āĻ¨ā§āĻĄāĻž āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ…āĻŦāĻŋāĻ˛āĻŽā§āĻŦā§‡ āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻžāĻ—ā§āĻ˛āĻŋ āĻ•āĻ˛ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ āĻ¨āĻž (āĻĒā§āĻļ-āĻ¨ā§€āĻ¤āĻŋ) āĻ¸āĻ‚āĻ¯ā§‹āĻ—āĻ•āĻžāĻ°ā§€, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ•āĻžāĻœā§‡āĻ° āĻ†āĻ‡āĻŸā§‡āĻŽāĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻāĻ• āĻ§āĻ°āĻŖā§‡āĻ° āĻŦāĻŋāĻ˛ā§āĻŸ-āĻ‡āĻ¨ āĻ…āĻ°ā§āĻĄāĻžāĻ°ā§‡ āĻ°āĻžāĻ–ā§āĻ¨āĨ¤ āĻ•āĻ°ā§āĻŽā§€ āĻ¤āĻžāĻ°āĻĒāĻ° REST āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻ•āĻžāĻœā§‡āĻ° āĻ†āĻ‡āĻŸā§‡āĻŽ āĻ†āĻ¨āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨, āĻ•āĻžāĻœāĻŸāĻŋ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻāĻŦāĻ‚ āĻ•āĻžāĻŽā§āĻ¨ā§āĻĄāĻžāĻ•ā§‡ āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ•āĻ°āĻ¤ā§‡ āĻŦāĻ˛āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ (āĻŸāĻžāĻ¨-āĻ¨ā§€āĻ¤āĻŋ)āĨ¤

REST āĻāĻŦāĻ‚ āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•āĻĢā§āĻ˛ā§‹ āĻ‡āĻžā§āĻœāĻŋāĻ¨ā§‡āĻ° āĻ‰āĻĒāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°ā§‡ āĻ¸āĻšāĻœ āĻ…āĻ°ā§āĻ•ā§‡āĻ¸ā§āĻŸā§āĻ°ā§‡āĻļāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ•āĻžāĻŽā§āĻ¨ā§āĻĄāĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡ (āĻ•ā§‹āĻ¨ āĻœāĻžāĻ­āĻž āĻ¨ā§‡āĻ‡)

āĻ¤āĻžāĻ‡ āĻĒā§āĻ°āĻĨāĻŽā§‡ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ° āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡ fetchAndLock (āĻ•āĻžāĻ°āĻŖ āĻ…āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ•āĻ°ā§āĻŽā§€āĻ°āĻž āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻ¸ā§āĻ•ā§‡āĻ˛ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻ‡ āĻ¸āĻŽāĻ¯āĻŧā§‡ āĻ•āĻžāĻœāĻ—ā§āĻ˛āĻŋ āĻ—ā§āĻ°āĻšāĻŖ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡):

  curl 
-H "Content-Type: application/json" 
-X POST 
-d <!-- -->'{"workerId":"worker123","maxTasks":1,"usePriority":true,"topics":[{"topicName": "reserve-car"}, "lockDuration": 10000, "variables": ["someData"]}]}'<!-- --> 
http://localhost:8080/engine-rest/external-task/fetchAndLock

āĻ¤āĻžāĻ°āĻĒāĻ° āĻ•āĻžāĻŽā§āĻ¨ā§āĻĄāĻžāĻ•ā§‡ āĻŦāĻ˛ āĻ•āĻ°ā§āĻŽā§€ āĻ•āĻžāĻœ āĻļā§‡āĻˇ āĻ•āĻ°ā§‡āĻ›ā§‡āĻ¨ (āĻŽāĻ¨ā§‡ āĻ°āĻžāĻ–āĻŦā§‡āĻ¨ āĻ¯ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ…āĻŦāĻļā§āĻ¯āĻ‡ āĻĒā§āĻ°āĻĨāĻŽ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ā§‡ āĻĒā§āĻ°āĻžāĻĒā§āĻ¤ āĻŦāĻžāĻšā§āĻ¯āĻŋāĻ• āĻŸāĻžāĻ¸ā§āĻ• āĻ†āĻ‡āĻĄāĻŋ āĻ˛āĻŋāĻ–āĻ¤ā§‡ āĻšāĻŦā§‡):

  curl 
-H "Content-Type: application/json" 
-X POST 
-d <!-- -->'{"workerId":"worker123", "variables": {}}'<!-- --> 
http://localhost:8080/engine-rest/<!-- -->external-task/EXTERNAL_TASK_ID/complete

āĻāĻŸāĻžāĻ‡ - āĻ†āĻĒāĻ¨āĻžāĻ° āĻāĻ–āĻ¨āĻ“ āĻ•ā§‹āĻ¨ āĻœāĻžāĻ­āĻž āĻĻāĻ°āĻ•āĻžāĻ° āĻ¨ā§‡āĻ‡, āĻ¤āĻžāĻ‡ āĻ¨āĻž? āĻāĻŦāĻ‚ āĻāĻŸāĻŋ āĻļā§āĻ°ā§ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¯āĻĨā§‡āĻˇā§āĻŸ!

āĻ•ā§āĻ˛āĻžāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋ

āĻ¯ā§‡āĻ•ā§‹āĻ¨ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻŋāĻ‚ āĻ­āĻžāĻˇāĻžāĻ¯āĻŧ REST API āĻ•āĻ˛ āĻ•āĻ°āĻž āĻ¸āĻšāĻœāĨ¤ āĻœāĻžāĻ­āĻžāĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸā§‡, āĻāĻŸāĻŋ JQuery āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ¸ā§āĻŦāĻŋāĻ§āĻžāĻœāĻ¨āĻ•āĻ­āĻžāĻŦā§‡ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ āĻāĻŦāĻ‚ C# āĻ, System.Net.Http āĻāĻŦāĻ‚ Newtonsoft.Json āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡āĨ¤ āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻāĻ‡ āĻ¸āĻŽāĻ¯āĻŧ āĻ˛āĻžāĻ—āĻŦā§‡. āĻ¤āĻžāĻ‡ āĻ†āĻĒāĻ¨āĻŋ āĻļā§āĻ§ā§ āĻ•āĻŋāĻ›ā§ āĻ•ā§āĻ˛āĻžāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨.

āĻāĻ‡ āĻŽā§āĻšā§āĻ°ā§āĻ¤ā§‡, āĻŦā§‡āĻļ āĻ•āĻ¯āĻŧā§‡āĻ•āĻŸāĻŋ āĻ°ā§‡āĻĄāĻŋāĻŽā§‡āĻĄ āĻ•ā§āĻ˛āĻžāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋ āĻ‰āĻĒāĻ˛āĻŦā§āĻ§:

  • āĻœāĻžāĻ­āĻžāĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ: āĻ˛āĻŋāĻ‚āĻ•. Camunda āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¸āĻŽāĻ°ā§āĻĨāĻŋāĻ¤;
  • āĻœāĻžāĻ­āĻž: āĻ˛āĻŋāĻ‚āĻ•. Camunda āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¸āĻŽāĻ°ā§āĻĨāĻŋāĻ¤;
  • āĻ¸āĻŋ #:āĻ˛āĻŋāĻ‚āĻ• и āĻ˛āĻŋāĻ‚āĻ•. āĻāĻ‡ āĻĻā§āĻŸāĻŋ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒāĻ‡ āĻāĻ•āĻŸāĻŋ āĻŽāĻ§ā§āĻ¯āĻŦāĻ°ā§āĻ¤ā§€ āĻ…āĻŦāĻ¸ā§āĻĨāĻžāĻ¯āĻŧ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ āĻāĻŦāĻ‚ āĻ•āĻžāĻ°ā§āĻ¯āĻ¤ āĻ¸ā§āĻĒā§āĻ¤, āĻ¤āĻŦā§‡ āĻāĻ•āĻŸāĻŋ āĻ­āĻžāĻ˛ āĻ¸ā§‚āĻšāĻ¨āĻž āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡;
  • āĻĒāĻŋāĻāĻ‡āĻšāĻĒāĻŋ: āĻ˛āĻŋāĻ‚āĻ• - āĻ–ā§āĻŦ āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ¨āĻ¯āĻŧ āĻāĻŦāĻ‚ āĻ¸āĻ°ā§āĻŦāĻļā§‡āĻˇ API āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻ—ā§āĻ˛āĻŋ āĻ…āĻ¨ā§āĻ¤āĻ°ā§āĻ­ā§āĻ•ā§āĻ¤ āĻ•āĻ°ā§‡ āĻ¨āĻž, āĻ¤āĻŦā§‡ āĻ†āĻŽāĻŋ āĻāĻŽāĻ¨ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒāĻ—ā§āĻ˛āĻŋ āĻœāĻžāĻ¨āĻŋ āĻ¯āĻž āĻāĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡āĨ¤

āĻœāĻžāĻ­āĻžāĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ āĻāĻŦāĻ‚ āĻœāĻžāĻ­āĻž āĻŦāĻžāĻĻ āĻĻāĻŋāĻ¯āĻŧā§‡, āĻ•ā§āĻ˛āĻžāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋāĻ—ā§āĻ˛āĻŋ āĻ•āĻžāĻŽā§āĻ¨ā§āĻĄāĻž āĻĒāĻŖā§āĻ¯ā§‡āĻ° āĻ…āĻ‚āĻļ āĻ¨āĻ¯āĻŧāĨ¤ āĻ†āĻļāĻž āĻ•āĻ°āĻŦā§‡āĻ¨ āĻ¨āĻž āĻ¯ā§‡ āĻ¤āĻžāĻ°āĻž āĻ•āĻžāĻŽā§āĻ¨ā§āĻĄāĻžāĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ REST API āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ•āĻ°āĻŦā§‡ā§ˇ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻ•āĻŸāĻŋ āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋ āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°ā§‡ āĻ¨āĻž āĻ¤āĻžāĻ° āĻŽāĻžāĻ¨ā§‡ āĻāĻ‡ āĻ¨āĻ¯āĻŧ āĻ¯ā§‡ āĻāĻŸāĻŋ āĻ¸ā§‡āĻ–āĻžāĻ¨ā§‡ āĻ¨ā§‡āĻ‡, āĻ¸āĻ°ā§āĻŦāĻĻāĻž Camunda āĻāĻ° REST API āĻšā§‡āĻ• āĻ•āĻ°ā§āĻ¨āĨ¤ āĻ°ā§‡āĻĢāĻžāĻ°ā§‡āĻ¨ā§āĻ¸ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒāĻ—ā§āĻ˛āĻŋ āĻāĻ•āĻŸāĻŋ āĻ¸ā§‚āĻšāĻ¨āĻž āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ āĻāĻŦāĻ‚ āĻŸā§‡āĻŽāĻĒā§āĻ˛ā§‡āĻŸ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡āĨ¤

C# āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ

āĻ‰āĻĒāĻ°ā§‡āĻ° āĻ•ā§āĻ˛āĻžāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ āĻ˛āĻžāĻ‡āĻŦā§āĻ°ā§‡āĻ°āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡, āĻ†āĻŽāĻ°āĻž āĻ¸āĻšāĻœāĻ­āĻžāĻŦā§‡ āĻ˛āĻŋāĻ–āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ:

  var camunda = new CamundaEngineClient("http://localhost:8080/engine-rest/engine/default/", null, null);
  // Deploy the BPMN XML file from the resources
  camunda.RepositoryService.Deploy("trip-booking", new List<object> {
        FileParameter.FromManifestResource(Assembly.GetExecutingAssembly(), "FlowingTripBookingSaga.Models.FlowingTripBookingSaga.bpmn")
     });
  
  // Register workers
  registerWorker("reserve-car", externalTask => {
    // here you can do the real thing! Like a sysout :-)
    Console.WriteLine("Reserving car now...");
    camunda.ExternalTaskService.Complete(workerId, externalTask.Id);
  });
  registerWorker("cancel-car", externalTask => {
    Console.WriteLine("Cancelling car now...");
    camunda.ExternalTaskService.Complete(workerId, externalTask.Id);
  });
  registerWorker("book-hotel", externalTask => {
    Console.WriteLine("Reserving hotel now...");
    camunda.ExternalTaskService.Complete(workerId, externalTask.Id);
  });
  // Register more workers...
  
  StartPolling();
  
  string processInstanceId = camunda.BpmnWorkflowService.StartProcessInstance("FlowingTripBookingSaga", new Dictionary<string, object>()
    {
      {"someBookingData", "..." }
    });

āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖāĻ­āĻžāĻŦā§‡ āĻ•āĻžāĻœ āĻ•āĻ°āĻž āĻ¸ā§‹āĻ°ā§āĻ¸ āĻ•ā§‹āĻĄ āĻ…āĻ¨āĻ˛āĻžāĻ‡āĻ¨ā§‡ āĻĒāĻžāĻ“āĻ¯āĻŧāĻž āĻ¯āĻžāĻŦā§‡: āĻ˛āĻŋāĻ‚āĻ•. āĻ†āĻ°ā§‡āĻ•āĻŸāĻŋ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻĒāĻžāĻ“āĻ¯āĻŧāĻž āĻ¯āĻžāĻ¯āĻŧ āĻ˛āĻŋāĻ‚āĻ•.

Node.js āĻ¸āĻš āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ

  var Workers = require('camunda-worker-node');
  var workers = Workers('http://localhost:8080/engine-rest', {
    workerId: 'some-worker-id'
  });
  
  workers.registerWorker('reserve-car', [ 'someData' ], function(context, callback) {
    var someNewData = context.variables.someData + " - added something";
    callback(null, {
      variables: {
        someNewData: someNewData
      }
    });
  });
  
  workers.shutdown();

āĻ†āĻ°āĻ“ āĻ¤āĻĨā§āĻ¯ āĻ“āĻ¯āĻŧā§‡āĻŦāĻ¸āĻžāĻ‡āĻŸā§‡ āĻĒāĻžāĻ“āĻ¯āĻŧāĻž āĻ¯āĻžāĻŦā§‡ github.com

āĻ•āĻžāĻŽā§āĻ¨ā§āĻĄāĻž āĻ˛āĻžā§āĻš āĻ•āĻ°āĻžāĻ° āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ āĻ‰āĻĒāĻžāĻ¯āĻŧ

"Camunda standalone WAR" āĻ¸āĻš āĻ•āĻžāĻ¸ā§āĻŸāĻŽ āĻĄāĻ•āĻžāĻ° āĻ‡āĻŽā§‡āĻœ

āĻ•āĻžāĻŽā§āĻ¨ā§āĻĄāĻž āĻĨā§‡āĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻĒā§‚āĻ°ā§āĻŦ-āĻ¨āĻŋāĻ°ā§āĻŽāĻŋāĻ¤ āĻĄāĻ•āĻžāĻ° āĻšāĻŋāĻ¤ā§āĻ°ā§‡āĻ° āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ āĻšāĻŋāĻ¸āĻžāĻŦā§‡, āĻ†āĻĒāĻ¨āĻŋ āĻ¨āĻŋāĻœā§‡ āĻŸāĻŽāĻ•ā§āĻ¯āĻžāĻŸ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ (āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻ…āĻĢāĻŋāĻ¸āĻŋāĻ¯āĻŧāĻžāĻ˛ āĻĄāĻ•āĻžāĻ° āĻŸāĻŽāĻ•ā§āĻ¯āĻžāĻŸ āĻšāĻŋāĻ¤ā§āĻ°āĻ—ā§āĻ˛āĻŋāĻ° āĻ‰āĻĒāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°ā§‡) āĻāĻŦāĻ‚ āĻ¤āĻžāĻ°āĻĒāĻ°ā§‡ āĻ¤āĻĨāĻžāĻ•āĻĨāĻŋāĻ¤ āĻ“āĻ¯āĻŧāĻžāĻ° āĻĢāĻžāĻ‡āĻ˛āĻ—ā§āĻ˛āĻŋāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻāĻ•āĻŸāĻŋ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻ•āĻžāĻŽā§āĻ¨ā§āĻĄāĻžāĻ•ā§‡ āĻ•āĻĒāĻŋ āĻ•āĻ°ā§āĻ¨ā§ˇ

REST āĻāĻŦāĻ‚ āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•āĻĢā§āĻ˛ā§‹ āĻ‡āĻžā§āĻœāĻŋāĻ¨ā§‡āĻ° āĻ‰āĻĒāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°ā§‡ āĻ¸āĻšāĻœ āĻ…āĻ°ā§āĻ•ā§‡āĻ¸ā§āĻŸā§āĻ°ā§‡āĻļāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ•āĻžāĻŽā§āĻ¨ā§āĻĄāĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡ (āĻ•ā§‹āĻ¨ āĻœāĻžāĻ­āĻž āĻ¨ā§‡āĻ‡)

āĻ†āĻĒāĻ¨āĻžāĻ° āĻ¯āĻĻāĻŋ āĻ…āĻ¨ā§‡āĻ• āĻ…āĻ¤āĻŋāĻ°āĻŋāĻ•ā§āĻ¤ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧāĻ¤āĻž āĻĨāĻžāĻ•ā§‡ āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻœāĻžāĻ­āĻž āĻŦāĻŋāĻ˛ā§āĻĄ āĻāĻ¨āĻ­āĻžāĻ¯āĻŧāĻ°āĻ¨āĻŽā§‡āĻ¨ā§āĻŸ āĻ¸ā§‡āĻŸ āĻ†āĻĒ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨, āĻ†āĻĒāĻ¨āĻŋ āĻ•ā§āĻ¯āĻžāĻŽā§āĻ¨ā§āĻĄāĻž āĻ¸ā§āĻŸā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ…ā§āĻ¯āĻžāĻ˛ā§‹āĻ¨ āĻ¯ā§āĻĻā§āĻ§āĻ“ āĻ¸ā§‡āĻŸ āĻ†āĻĒ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĨ¤ āĻāĻ‡ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ—ā§āĻ˛āĻŋāĻ° āĻŽāĻ¤ āĻāĻ•āĻŸāĻŋ Maven āĻŦāĻŋāĻ˛ā§āĻĄ āĻ¸ā§‡āĻŸ āĻ†āĻĒ āĻ•āĻ°ā§āĻ¨: āĻŦāĻŋāĻ˛ā§āĻĄ āĻ¯ā§āĻĻā§āĻ§ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ° āĻ¸āĻš Maven āĻŦāĻž āĻ¸āĻŽāĻžāĻŦā§‡āĻļ āĻ“āĻ­āĻžāĻ°āĻ˛ā§‡ āĻ¸āĻ™ā§āĻ—ā§‡ Maven.

āĻ•āĻžāĻŽā§āĻ¨ā§āĻĄāĻž āĻŸāĻŽāĻ•ā§āĻ¯āĻžāĻŸ āĻŦāĻŋāĻ¤āĻ°āĻŖ āĻļā§āĻ°ā§ āĻšāĻšā§āĻ›ā§‡

āĻ†āĻ°ā§‡āĻ•āĻŸāĻŋ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ āĻšāĻ˛ āĻ•ā§āĻ¯āĻžāĻŽā§āĻ¨ā§āĻĄāĻž āĻŸāĻŽāĻ•ā§āĻ¯āĻžāĻŸ āĻĄāĻŋāĻ¸ā§āĻŸā§āĻ°āĻŋāĻŦāĻŋāĻ‰āĻļāĻ¨ āĻĄāĻžāĻ‰āĻ¨āĻ˛ā§‹āĻĄ āĻ•āĻ°āĻž, āĻāĻŸāĻŋ āĻ†āĻ¨āĻœāĻŋāĻĒ āĻ•āĻ°āĻž āĻāĻŦāĻ‚ āĻāĻŸāĻŋ āĻšāĻžāĻ˛āĻžāĻ¨ā§‹āĨ¤ āĻāĻŸāĻŋ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ†āĻĒāĻ¨āĻžāĻ° āĻ•āĻŽā§āĻĒāĻŋāĻ‰āĻŸāĻžāĻ°ā§‡ āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°āĻž Java Runtime Environment (JRE) āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨āĨ¤ āĻāĻŸāĻž āĻ¸āĻšāĻœā§‡āĻ‡ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ āĻāĻ–āĻžāĻ¨ āĻĨā§‡āĻ•ā§‡ āĻĄāĻžāĻ‰āĻ¨āĻ˛ā§‹āĻĄ āĻ•āĻ°ā§āĻ¨.

REST āĻāĻŦāĻ‚ āĻ“āĻ¯āĻŧāĻžāĻ°ā§āĻ•āĻĢā§āĻ˛ā§‹ āĻ‡āĻžā§āĻœāĻŋāĻ¨ā§‡āĻ° āĻ‰āĻĒāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°ā§‡ āĻ¸āĻšāĻœ āĻ…āĻ°ā§āĻ•ā§‡āĻ¸ā§āĻŸā§āĻ°ā§‡āĻļāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ•āĻžāĻŽā§āĻ¨ā§āĻĄāĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡ (āĻ•ā§‹āĻ¨ āĻœāĻžāĻ­āĻž āĻ¨ā§‡āĻ‡)

āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻŦāĻž āĻ…āĻ¨ā§āĻ¯ āĻ•āĻŋāĻ›ā§ āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻŸāĻŽāĻ•ā§āĻ¯āĻžāĻŸ āĻŽāĻ¤ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ° āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡ āĻĄāĻ•ā§āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāĻ¨ā§‡ āĻŦāĻ°ā§āĻŖāĻŋāĻ¤. āĻ†āĻŽāĻŋ āĻœāĻžāĻ¨āĻŋ āĻŸāĻŽāĻ•ā§āĻ¯āĻžāĻŸ āĻœāĻŸāĻŋāĻ˛ āĻļā§‹āĻ¨āĻžāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡, āĻ¤āĻŦā§‡ āĻāĻŸāĻŋ āĻ†āĻ¸āĻ˛ā§‡ āĻ–ā§āĻŦ āĻ¸āĻšāĻœāĨ¤ āĻāĻŦāĻ‚ Google āĻāĻ‡ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ āĻāĻŽāĻ¨ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ•āĻŋāĻ›ā§āĻ° āĻ‰āĻ¤ā§āĻ¤āĻ° āĻœāĻžāĻ¨ā§‡ā§ˇ

āĻŸāĻŽāĻ•ā§āĻ¯āĻžāĻŸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ•āĻžāĻŽā§āĻ¨ā§āĻĄāĻž āĻšāĻžāĻ˛āĻžāĻ¨ā§‹

āĻļā§‡āĻˇ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒāĻŸāĻŋ āĻš'āĻ˛ āĻ¨āĻŋāĻœā§‡āĻ‡ āĻŸāĻŽāĻ•ā§āĻ¯āĻžāĻŸ āĻ¸ā§‡āĻŸ āĻ†āĻĒ āĻ•āĻ°ā§āĻ¨ āĻāĻŦāĻ‚ āĻāĻ¤ā§‡ āĻ•āĻžāĻŽā§āĻ¨ā§āĻĄāĻž āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°ā§āĻ¨, āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ā§‡āĻļāĻ¨ āĻŦāĻŋāĻŦāĻ°āĻŖ āĻ…āĻ¨ā§āĻ¸āĻ°āĻŖ āĻ•āĻ°ā§āĻ¨. āĻāĻŸāĻŋ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻŸāĻŽāĻ•ā§āĻ¯āĻžāĻŸā§‡āĻ° āĻ¯ā§‡ āĻ•ā§‹āĻ¨āĻ“ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ āĻĻā§‡āĻŦā§‡, āĻŦāĻž āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻ‰āĻ‡āĻ¨ā§āĻĄā§‹āĻœ āĻĒāĻ°āĻŋāĻˇā§‡āĻŦāĻž āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ āĻ•āĻ°āĻŦā§‡āĨ¤

āĻ‰ā§ŽāĻĒāĻžāĻĻāĻ¨ā§‡ āĻ•āĻžāĻŽā§āĻ¨ā§āĻĄāĻž āĻšāĻžāĻ˛ā§ āĻ•āĻ°āĻž

āĻāĻŸāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻ•āĻžāĻŽā§āĻ¨ā§āĻĄāĻž āĻšāĻžāĻ˛āĻžāĻ¨ā§‹āĻ° āĻœāĻ¨ā§āĻ¯ āĻ•āĻŋāĻ›ā§ āĻšā§‚āĻĄāĻŧāĻžāĻ¨ā§āĻ¤ āĻ¸ā§‡āĻŸāĻ†āĻĒā§‡āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻšāĻŦā§‡āĨ¤ āĻ•āĻžāĻŽā§āĻ¨ā§āĻĄāĻžāĻ¯āĻŧ āĻāĻŽāĻ¨ āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļāĻŋāĻ•āĻž āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡ āĻ¯āĻž āĻāĻŸāĻŋāĻ•ā§‡ āĻŦāĻŋāĻļāĻĻāĻ­āĻžāĻŦā§‡ āĻŦāĻ°ā§āĻŖāĻ¨āĻž āĻ•āĻ°ā§‡, āĻ¤āĻŦā§‡ āĻ†āĻŽāĻŋ āĻāĻ‡ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§‡ āĻ¸ā§‡āĻ—ā§āĻ˛āĻŋāĻ¤ā§‡ āĻ¯āĻžāĻŦ āĻ¨āĻž - āĻ†āĻŽāĻŋ āĻ•ā§‡āĻŦāĻ˛ āĻāĻ•āĻŸāĻŋ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖā§‡āĻ° āĻ¨āĻžāĻŽ āĻĻā§‡āĻŦ: āĻĄāĻŋāĻ¸ā§āĻŸā§āĻ°āĻŋāĻŦāĻŋāĻ‰āĻļāĻ¨ā§‡āĻ° REST API āĻĄāĻŋāĻĢāĻ˛ā§āĻŸāĻ°ā§‚āĻĒā§‡ āĻĒā§āĻ°āĻŽāĻžāĻŖā§€āĻ•āĻ°āĻŖā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ° āĻ•āĻ°āĻž āĻ¨ā§‡āĻ‡āĨ¤ āĻ†āĻĒāĻ¨āĻŋ āĻāĻŸāĻŋ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨.

āĻŦā§āĻĻā§āĻ§āĻŋāĻŽāĻžāĻ¨

āĻ†āĻĒāĻ¨āĻŋ āĻĻā§‡āĻ–āĻ¤ā§‡ āĻĒāĻžāĻšā§āĻ›ā§‡āĻ¨, āĻ†āĻĒāĻ¨āĻŋ āĻ¯ā§‡ āĻ­āĻžāĻˇāĻžāĻ‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻ›ā§‡āĻ¨ āĻ¨āĻž āĻ•ā§‡āĻ¨, Camunda āĻĻāĻŋāĻ¯āĻŧā§‡ āĻļā§āĻ°ā§ āĻ•āĻ°āĻž āĻ–ā§āĻŦāĻ‡ āĻ¸āĻšāĻœāĨ¤ āĻŽā§‚āĻ˛ āĻŦāĻŋāĻˇāĻ¯āĻŧ āĻšāĻ˛ āĻ¯ā§‡ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻŽāĻŋāĻĨāĻ¸ā§āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž REST API āĻāĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻ¸āĻŽā§āĻĒāĻ¨ā§āĻ¨ āĻšāĻ¯āĻŧāĨ¤ āĻ‡āĻ¨āĻ¸ā§āĻŸāĻ˛ā§‡āĻļāĻ¨āĻŸāĻŋāĻ“ āĻŦā§‡āĻļ āĻ¸āĻšāĻœ, āĻŦāĻŋāĻļā§‡āĻˇ āĻ•āĻ°ā§‡ āĻĄāĻ•āĻžāĻ° āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧāĨ¤

āĻ‰āĻ¤ā§āĻ¸: www.habr.com

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨