Category Software Engineering

[TESTING] āļĄāļēāļ—āļģāđƒāļŦāđ‰ JSON-Server Support Request āđāļšāļš Chunked āļ„āļĢāļąāļš

āļŦāļĨāļąāļ‡āļˆāļēāļāļ•āļīāļ”āļ›āļąāļāļŦāļēāđ€āļĢāļ·āđˆāļ­āļ‡ BPMN Engine  āđāļĨāđ‰āļ§āļžāļšāļ§āđˆāļē Service Task āļ–āđ‰āļēāļ—āļģāđ€āļ›āđ‡āļ™ Web Service āđāļĨāđ‰āļ§āļ‚āđ‰āļ­āļĄāļđāļĨ Request āđƒāļ™āļŠāđˆāļ§āļ™āļ‚āļ­āļ‡ Body āļĄāļąāļ™āļŦāļēāļĒāđ„āļ›āļ„āļĢāļąāļš āļŦāļĨāļąāļ‡āļˆāļēāļāđ„āļĨāđˆāđ„āļ›āđ„āļĨāđˆāļĄāļē āđ‚āļ”āļĒāļ”āļđāļˆāļēāļ Forum āļ‚āļ­āļ‡ Camunda Payload is empty when making HTTP POST request with HttpConnector How to specify POST payload for Rest Tasks ? Disable sendingâ€Ķ

[TESTING] āļĄāļē Debug Request āļ—āļĩāđˆāļŠāđˆāļ‡āđ€āļ‚āđ‰āļēāđ„āļ›āđƒāļ™ JSON-SERVER āļ„āļĢāļąāļš

āļŦāļĨāļąāļ‡āļˆāļēāļāļ—āļĩāđˆāđ„āļ”āđ‰āļĨāļ‡ JSON-Server āđ„āļ›āđāļĨāđ‰āļ§āđƒāļ™ Blog āļ•āļ­āļ™āļāđˆāļ­āļ™āļ„āļĢāļąāļš āļŦāļĨāļąāļ‡āļˆāļēāļāļ—āļĩāđˆāļĨāļ­āļ‡ Service Task āļšāļ™ BPMN āđāļĨāđ‰āļ§āļžāļšāļ§āđˆāļēāļĄāļąāļ™āđ„āļĄāđˆāļŠāđˆāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāđ„āļ› āļ„āļĢāļēāļ§āļ™āļĩāđ‰āļœāļĄāđ€āļĨāļĒāļ•āđ‰āļ­āļ‡āļĄāļēāđ„āļĨāđˆāļ”āļđ Request āļ—āļĩāđˆāļŠāđˆāļ‡āđ„āļ›āļ—āļĩāđˆÂ JSON-Server āļĄāļąāļ™āļŠāđˆāļ‡āđ„āļ›āļˆāļĢāļīāļ‡ āļŦāļĢāļ·āļ­āļ›āđˆāļēāļ§ āđāļĨāļ°āļŠāđˆāļ‡āļ­āļ°āđ„āļĢāđ„āļ›āļšāđ‰āļēāļ‡āļ„āļĢāļąāļš āđ‚āļ”āļĒāļŠāļīāđˆāļ‡āļ—āļĩāđˆāļĄāļĩāļāđˆāļ­āļ™āļ„āļĢāļąāļš Node.js Editor āļ­āļ°āđ„āļĢāļāđ‡āđ„āļ”āđ‰āļ„āļĢāļąāļš āđ€āļžāļĢāļēāļ° āđ€āļĢāļēāđ€āļ‚āļĩāļĒāļ™ JavaScript āđ€āļĢāļĩāļĒāļāđƒāļŠāđ‰āļ‡āļēāļ™ JSON-Server āļ„āļĢāļ­āļšāļ­āļĩāļāļ—āļĩāļ™āļķāļ‡āļāđˆāļ­āļ™āļ„āļĢāļąāļš āļŠāļģāļŦāļĢāļąāļšāļ‚āļąāđ‰āļ™āļ•āļ­āļ™āļĄāļēāļĨāļļāļĒāđ„āļ›āļžāļĢāđ‰āļ­āļĄāđ†āļāļąāļ™āđ€āļĨāļĒāļ„āļĢāļąāļšāļƒ āļŠāļĢāđ‰āļēāļ‡ Project āļŠāļģāļŦāļĢāļąāļš Node āļ”āđ‰āļ§āļĒāļ„āļģāļŠāļąāđˆāļ‡Â npm init -y  āļ‹āļķāđˆāļ‡āđ„āļ”āđ‰āļœāļĨāļĨāļąāļžāļ˜āđŒāđ€āļ›āđ‡āļ™Â package.json  āļ—āļĩāđˆāļ—āļģāļŦāļ™āđ‰āļēāļ—āļĩāđˆāđ€āļāđ‡āļšāļ‚āđ‰āļ­āļĄāļđāļĨāļ‚āļ­āļ‡ Project āđāļĨāļ° Packageâ€Ķ

[TESTING] Mock Data āļŠāļģāļŦāļĢāļąāļš API Test āļ”āđ‰āļ§āļĒ JSON-Server āļāļąāļ™āļ„āļĢāļąāļš

āļŦāļĨāļąāļ‡āļˆāļēāļāļ—āļģ BPMN āļ—āļĩāđˆāđ€āļ›āđ‡āļ™ Servicer Task āđ€āļŠāļĢāđ‡āļˆāđāļĨāļ° āđ‚āļ”āļĒāļĨāļ­āļ‡āđƒāļŠāđ‰ Mock REST-API āļˆāļēāļÂ  āđ€āļžāļ·āđˆāļ­ POC (Proof of concept) āđāļĨāđ‰āļ§āļ™āļąāđ‰āļ™ āļŠāļīāđˆāļ‡āļ–āļąāļ”āļĄāļēāļ—āļĩāđˆāļœāļĄāļ—āļģ āļ„āļ·āļ­ āļ•āđ‰āļ­āļ‡āļĄāļēāļĨāļ­āļ‡āļŠāļĢāđ‰āļēāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāđƒāļŦāđ‰āļĄāļąāļ™ Dynamic āļĄāļēāļāļāđˆāļēāļ™āļĩāđ‰āļ„āļĢāļąāļš āļ‹āļķāđˆāļ‡āļœāļĄāđ„āļ”āđ‰āđ€āļˆāļ­ Open Source āļ•āļąāļ§āļ™āļķāļ‡āļ—āļĩāđˆāļ™āđˆāļēāļŠāļ™āđƒāļˆāļĄāļēāļāļ„āļĢāļąāļš āđāļ—āđˆāļ™āđāļ—āđŠāļ™āļ™āļ™ āļĄāļąāļ™ āļ„āļ·āļ­ JSON Server āļ„āļĢāļąāļš āđ€āļ›āđ‡āļ™ Tools āļ—āļĩāđˆāđ€āļāļīāļ”āļĄāļēāđ€āļžāļ·āđˆāļ­āļ—āļģ Mock REST-API āđ‚āļ”āļĒāđāļ—āđ‰āđ€āļĨāļĒāļ„āļĢāļąāļš āļĄāļąāļ™āđ€āļĨāļĒāđ€āļ›āđ‡āļ™āļ—āļĩāđˆāļĄāļēāļ‚āļ­āļ‡ Blog āļ•āļ­āļ™āļ™āļĩāđ‰āļ”āđ‰āļ§āļĒāļ„āļĢāļąāļšâ€Ķ

[BPMN] Service Task with REST-API (OTHER) Example

āļŦāļĨāļąāļ‡āļˆāļēāļāđ„āļ”āđ‰āļĨāļ­āļ‡āđ„āļ›āđāļĨāđ‰āļ§āļāļąāļš REST API āļœāđˆāļēāļ™ Service Task āļšāļ™ BPMN āđ„āļ› 2 āđ€āļĢāļ·āđˆāļ­āļ‡ [BPMN] Service Task with REST-API (GET) Example [BPMN] Service Task with REST-API (PATCH) Example āļ„āļĢāļēāļ§āļ™āļĩāđ‰āļāđ‡āļĄāļēāļĨāļ­āļ‡āđāļšāļšāļ—āļĩāđˆāđ€āļŦāļĨāļ·āļ­āļšāđ‰āļēāļ‡āļ§āđˆāļēāļ­āļąāļ™āđ„āļŦāļ™ Work āļŦāļĢāļ·āļ­āđ„āļĄāđˆ Work āļ„āļĢāļąāļš āđ‚āļ”āļĒāļœāļĄāđ„āļ”āđ‰āļŠāļĢāđ‰āļēāļ‡ BPMN āļ—āļĩāđˆāļĄāļĩāļāļĢāļ°āļšāļ§āļ™āļāļēāļĢāļ—āļģāļ‡āļēāļ™ āļ”āļąāļ‡āļĢāļđāļ›āļ„āļĢāļąāļš āļ–āđ‰āļēāļŠāļąāļ‡āđ€āļāļ•āļļāđƒāļ™āđāļšāļšāļˆāļģāļĨāļ­āļ‡āļ—āļĩāđˆāļœāļĄāļ—āļģ āļĄāļąāļ™āļĄāļĩāļŠāļąāļāļĨāļąāļāļĐāļ“āđŒāļ—āļĩāđˆāļ–āļđāļāđ€āļ‚āļĩāļĒāļ™āļāļģāļāļąāļšāļ§āđˆāļē JSON-Server āļ•āļąāļ§āļ™āļąāđ‰āļ™ āļ„āļ·āļ­ DataStoreâ€Ķ

[BPMN] Service Task with REST-API (PATCH) Example

āļŦāļĨāļąāļ‡āļˆāļēāļ Blog āļ•āļ­āļ™āļāđˆāļ­āļ™ āļœāļĄāđ„āļ”āđ‰āļĨāļ­āļ‡ Service Task āđ€āļŠāļ·āđˆāļ­āļĄāļāļąāļš Web Service āļœāđˆāļēāļ™āļ§āļīāļ˜āļĩāļāļēāļĢ GET āđ€āļžāļ·āđˆāļ­āļ—āļĩāđˆāļ”āļķāļ‡āļ‚āđ‰āļ­āļĄāļđāļĨāļĄāļēāđāļŠāļ”āļ‡āļœāļĨāļ„āļĢāļąāļš āļ„āļĢāļēāļ§āļ™āļĩāđ‰āļŦāļĨāļąāļ‡āļˆāļēāļ GET āļ‚āđ‰āļ­āļĄāļđāļĨāđ„āļ›āđāļĨāđ‰āļ§āļ„āļĢāļēāļ§āļ™āļĩāđ‰ āđ€āļĢāļēāļĨāļ­āļ‡āļĄāļēāļ—āļģāļāļēāļĢāđāļāđ‰āđ„āļ‚āļ‚āđ‰āļ­āļĄāļđāļĨāļ„āļĢāļąāļš āļ‹āļķāđˆāļ‡āļāļēāļĢāđāļāđ‰āđ„āļ‚āļ‚āđ‰āļ­āļĄāļđāļĨāļšāļēāļ‡āļŠāđˆāļ§āļ™ āļ­āļąāļ™āļ™āļĩāđ‰āļ—āļēāļ‡ Web Service (REST API) āđ€āļ„āđ‰āļēāļĄāļĩāļ§āļīāļ˜āļĩāļāļēāļĢāļ—āļĩāđˆāđ€āļĢāļĩāļĒāļāļ§āđˆāļē PATCH āļ„āļĢāļąāļš āļŠāđˆāļ§āļ™āļˆāļ°āļ—āļģāļ­āļĒāđˆāļēāļ‡āđ„āļĢāļ™āļąāđ‰āļ™āļĄāļēāļĨāļļāļĒāļāļąāļ™āđ€āļĨāļĒāļ„āļĢāļąāļš āđ€āļ•āļĢāļĩāļĒāļĄāļ•āļąāļ§āļ„āļĢāļąāļš Camunda BPMN Engine – Blog āļœāļĄāļĄāļĩāđ€āļ‚āļĩāļĒāļ™āļ™āļ° āļ­āļīāļ­āļī JSON-Server – āļ•āļąāļ§ Mock API āļ„āļĢāļąāļšâ€Ķ

[BPMN] Service Task with REST-API (Get) Example

āļŦāļĨāļąāļ‡āļˆāļēāļāļ‡āļĄāđ†āļĄāļēāļ™āļēāļ™āļžāļ­āļŠāļĄāļ„āļ§āļĢāđāļĨāđ‰āļ§āļāļąāļšāļāļēāļĢāđƒāļŠāđ‰āļ‡āļēāļ™ Service Task āļāļąāļš Web Service āļāļąāļš Camunda BPMN Engine āļ„āļĢāļąāļš āđ‚āļ”āļĒāļŠāļīāđˆāļ‡āļ—āļĩāđˆāļœāļĄāđƒāļŠāđ‰ āļ„āļ·āļ­ āļ•āļąāļ§ Camunda Connector āļ—āļĩāđˆāļŠāđˆāļ§āļĒāđƒāļŦāđ‰āđ€āļĢāļēāļŠāļēāļĄāļēāļĢāļ– Config Web Service āđ„āļ”āđ‰āļ‡āđˆāļēāļĒ āđ„āļĄāđˆāļ•āđ‰āļ­āļ‡āļŠāđˆāļ‡āļ‡āļēāļ™āđƒāļŦāđ‰ Delegate Code āļ­āļĒāđˆāļēāļ‡ BPMN Engine āļ‚āļ­āļ‡āļ„āđˆāļēāļĒāļ­āļ·āđˆāļ™āđ†āļ„āļĢāļąāļš āļŠāļģāļŦāļĢāļąāļš NOTE: āļŠāļģāļŦāļĢāļąāļšāđ€āļĢāļ·āđˆāļ­āļ‡ Service Task āļ•āļąāļ§ Spec āļ‚āļ­āļ‡ BPMN āđ„āļĄāđˆāđ„āļ”āđ‰āļĢāļ°āļšāļļāđƒāļ™ Spec āļŠāļąāļ”āđ€āļˆāļ™â€Ķ

[BPMN] āļĨāļ­āļ‡āļ„āļīāļ”āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļ‚āļ­āļ‡ Completion Condition āļāļąāļ™

āļžāļ­āļ”āļĩāļŠāđˆāļ§āļ‡āļ™āļĩāđ‰āđ„āļ”āđ‰āļĨāļ­āļ‡āđ€āļĨāđˆāļ™ BPMN āđāļĨāđ‰āļ§ āļ›āļąāļāļŦāļēāļ—āļĩāđˆāļŠāļģāļ„āļąāļāļ‚āļ­āļ‡ Spec āļ•āļąāļ§ BPMN āđ€āļ­āļ‡ āļ„āļ·āļ­ āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļ™āđ‰āļ­āļĒ āđāļĨāļ°āđ„āļĄāđˆāļ„āļĢāļ­āļšāļ„āļĨāļļāļĄāļ•āļēāļĄāļ„āļļāļ“āļŠāļĄāļšāļąāļ•āļīāļ—āļĩāđˆāđ„āļ”āđ‰āļĢāļ°āļšāļļāđ„āļ§āđ‰āđƒāļ™ Spec āļ„āļĢāļąāļš āļ­āļĒāđˆāļēāļ‡āļ—āļĩāđˆāļœāļĄāđ‚āļ„āļ•āļĢāļ‡āļ‡ āļ•āļ­āļ™āļ™āļĩāđ‰ āļ„āļ·āļ­ Attribute āļ‚āļ­āļ‡ Multi-Instance āļ‚āļ­āļ‡ Task āļ„āļĢāļąāļš āļĨāļ­āļ‡āļĄāļēāļ„āļīāļ”āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļāļąāļ™āļ”āļĩāļāļ§āđˆāļēāļ„āļĢāļąāļš Task “Monitor Shipment” – Completion Condition āļ„āļ·āļ­ āļŠāļīāļ™āļ„āđ‰āļēāļ–āļķāļ‡āļˆāļļāļ”āļŦāļĄāļēāļĒāļ›āļĨāļēāļĒāļ—āļēāļ‡āđāļĨāđ‰āļ§ Task “Approval TOR” – Completion Condition āļ„āļ·āļ­ āļ„āļ“āļ°āļāļĢāļĢāļĄāļāļēāļĢ 2 āđƒāļ™â€Ķ

[BPMN] āļĄāļēāļĨāļ­āļ‡āđƒāļŠāđ‰ Timer Start Event āļāļąāļ™āļ„āļĢāļąāļš

āļˆāļēāļ Blog āļ•āļ­āļ™āļ—āļĩāđˆāđāļĨāđ‰āļ§ āļŦāļĨāļąāļ‡āļˆāļēāļāđ„āļ›āļ•āļšāļ•āļĩāļāļąāļšÂ Timer Start Event  āļ—āļĩāđˆāđ„āļĄāđˆāļŠāļēāļĄāļēāļĢāļ– Deploy āđ„āļ”āđ‰āļĄāļē 5 āđ€āļ•āđ‡āļĄāđ† āļŦāļĨāļąāļ‡āļˆāļēāļāđāļāđ‰āļ›āļąāļāļŦāļēāđ„āļ”āđ‰āđāļĨāđ‰āļ§ āļ„āļĢāļēāļ§āļ™āļĩāđ‰āļĄāļēāļĨāļ­āļ‡āļ”āļđāļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļāļąāļ™āļ„āļĢāļąāļš āļŦāļĨāļēāļĒāļ„āļ™āļ—āļĩāđˆāļ­āđˆāļēāļ™ Spec āļ‚āļ­āļ‡ BPMN āđ€āļ­āļēāļ™āđˆāļēāļˆāļ°āļ‡āļ‡āļāļąāļ™āļ„āļĢāļąāļš āļĄāļēāļ”āļđāļāļĢāļ°āļšāļ§āļ™āļāļēāļĢāđāļšāļšāļ‡āđˆāļēāļĒāđ†āļāļąāļ™āļāđˆāļ­āļ™āļ„āļĢāļąāļš Note: āļāļĢāļ°āļšāļ§āļ™āļāļēāļĢāļ—āļĩāđˆāđ„āļĄāđˆāđ„āļ”āđ‰āđ€āļ›āđ‡āļ™āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļ‚āļ­āļ‡āļāļĢāļ°āļšāļ§āļ™āļāļēāļĢāļ—āļēāļ‡āļ˜āļļāļĢāļāļīāļˆāļˆāļĢāļīāļ‡āđ†āļ™āļ°āļ„āļĢāļąāļš āđāļ„āđˆāđ€āļžāļĩāļĒāļ‡āļ—āļ”āļŠāļ­āļš Start Timer Event āđ‚āļ”āļĒāļĄāļĩāļŠāđˆāļ§āļ™āļ›āļĢāļ°āļāļ­āļš āļ”āļąāļ‡āļ™āļĩāđ‰ Start Timer Event – āļˆāļļāļ”āļ™āļĩāđ‰āļžāļĢāļ°āđ€āļ­āļāđ€āļĨāļĒāļ„āļĢāļąāļš āđ€āļžāļĢāļēāļ°āļĄāļĩāļāļēāļĢāļāļģāļŦāļ™āļ”āļ•āļēāļĄ Spec āļ‚āļ­āļ‡ BPMN āļ„āļĢāļąāļš āļ•āļēāļĄ Date Pattern  R4/2018-06-03T00:00/PT5M Task āļ™āļĩāđ‰āļˆāļ°āļ–āļđāļâ€Ķ

[BPMN] āđ€āļĄāļ·āđˆāļ­ Timer Start Event āļ—āļģāđƒāļŦāđ‰āđ€āļāļīāļ”āļ›āļąāļāļŦāļē duedate is null

āļŦāļĨāļąāļ‡āļˆāļēāļāļ—āļģ Thesis āļĄāļēāđ€āļĢāļ·āđˆāļ­āļĒāđ† āļœāļĄāđ„āļ”āđ‰āļĄāļēāļĨāļ­āļ‡āđƒāļŠāđ‰ Timer Start Event āļ‚āļ­āļ‡āđāļšāļšāļˆāļģāļĨāļ­āļ‡ BPMN āļžāļ­āļˆāļ° Deploy āđ€āļ—āđˆāļēāļ™āļąāđ‰āļ™āđāļŦāļĨāļ° ? ERROR org.camunda.bpm.engine.context – ENGINE-16004 Exception while closing command context: duedate is null org.camunda.bpm.engine.exception.NullValueException:duedate is null at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_152] at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_152] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_152] at java.lang.reflect.Constructor.newInstance(Constructor.java:423)â€Ķ

[BPMN] āđ€āļžāļīāđˆāļĄāđ€āļ•āļīāļĄāđ€āļāļĩāđˆāļĒāļ§āļāļąāļš multiInstanceLoopCharacteristics

āļˆāļēāļ Blog āļ—āļĩāđˆāđāļĨāđ‰āļ§āļ—āļĩāđˆāļœāļĄāđ„āļ”āđ‰āđ€āļ‚āļĩāļĒāļ™āđ€āļāļĩāđˆāļĒāļ§āļāļąāļšāļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āļ‚āļ­āļ‡Â multiInstanceLoopCharacteristics āđ‚āļ”āļĒāđƒāļŠāđ‰āļ•āļąāļ§āļ­āļĒāđˆāļēāļ‡āđ€āļĢāļ·āđˆāļ­āļ‡Â āļāļĢāļ°āļšāļ§āļ™āļāļēāļĢāļ‚āļ­āļ‡āļāļēāļĢāļ‚āļ­āđ€āļŠāļ™āļ­āļĢāļēāļ‡āļ§āļąāļĨāđƒāļŦāđ‰āļāļąāļšāļžāļ™āļąāļāļ‡āļēāļ™āļ”āļĩāđ€āļ”āđˆāļ™ āļ‹āļķāđˆāļ‡āļĨāļ­āļ‡āđ€āļĨāđˆāļ™āđ„āļ› āđ€āļĨāđˆāļ™āļĄāļēāđāļĨāđ‰āļ§āļžāļšāļ›āļąāļāļŦāļē āļ”āļąāļ‡āļ™āļĩāđ‰ Task “Evaluate Award” āđ„āļ”āđ‰āļ–āļđāļ Assign āđƒāļŦāđ‰āđ€āļ›āđ‡āļ™ Group āđ‚āļ”āļĒāļ—āļĩāđˆāļāļĢāļĢāļĄāļāļēāļĢāđāļ•āđˆāļĨāļ°āļ—āđˆāļēāļ™āđ€āļĨāļ·āļ­āļāđ„āļ›āļ—āļģāļ„āļĢāļąāļš āđāļ•āđˆāļĄāļąāļ™āļŠāļēāļĄāļēāļĢāļ– Claim āļ‹āđ‰āļģāļāļąāļ™āđ„āļ”āđ‰āļ„āļĢāļąāļš āđāļšāļšāļ™āļĩāđ‰āđ„āļĄāđˆāļ”āļĩāđāļ™āđˆāļ„āļĢāļąāļš āļ—āļēāļ‡āđāļāđ‰āđ„āļ‚āļŦāļĨāđˆāļ° āđāļšāļšāļ—āļĩāđˆ 1: āđāļāđ‰āđ„āļ‚ Object āļ‚āļ­āļ‡ MultiInstance āđāļĨāđ‰āļ§āđƒāļŦāđ‰āļāļģāļŦāļ™āļ” User āđ€āļ›āđ‡āļ™ Assignee āļŠāļģāļŦāļĢāļąāļš Task āļ™āļąāđ‰āļ™āđ€āļĨāļĒ āđāļšāļšāļ—āļĩāđˆ 2:āđāļāđ‰āđ„āļ‚āđ‚āļ”āļĒāļāļēāļĢāđ€āļžāļīāđˆāļĄ Listener āđāļĨāđ‰āļ§āđ€āļ‚āļĩāļĒāļ™ Code āļ‚āļķāđ‰āļ™āļĄāļēāļ•āļĢāļ§āļˆāļŠāļ­āļšāļ„āļĢāļąāļš **â€Ķ