Endtoend traceability Producers Raw material arrival Shipper Raw
End-to-end traceability Producers Raw material arrival Shipper Raw material quality control Raw material traceability Production unit Raw material storage Shipper Manufacturing steps B 2 B Quality control of manufacture Manufacturing B 2 C Storage finished product Preparation of delivery Distribution Traceability of each organic component in the blockchain, from factory entrance to delivery to the end customer
Manufacturing process RP/TP in Sett g e ecip r p u Manufactur ing Skill trans fer EQ Quality Control Start Sk ill tra n sfe r Storage Roles : Quality team (EQ) Product Manager (RP) Production Technician (TP) Warehouse worker (M) Sales ADV (ADV) KO ADV Expedition M
Raw material process EQ Setti ng u p Skill trans recipe fer Quality control M r nsfe a r t Skill Manufacturing Storage Roles : Quality team (EQ) Product Manager (RP) Production Technician (TP) Warehouse worker (M) RP/TP KO
Technical implementation Public API Private API Blockchain Workbench . Net Core API based on Azure Web Apps & Azure Function Smart contracts related to business process Configuration file – Application and workflow definition
Configuration file Application Metadata Application Roles Workflows
Before Blockchain Workbench function manufacturing. Control( uint 16 _lot. Id. Bio, uint 16 _storage. Location, bool _is. Valid) public returns (bool) { Role user. Role = get. User. Role. By. Address(msg. sender); Material memory material = materials [_lot. Id. Bio]; if((user. Role != Role. Product. Manager || user. Role != Role. Production. Technician) && material. state != Material. State. Pending. Inspection. Manufacturing) { revert ("no rights"); return false; } if (_is. Valid){ set. Storage. Location(_lot. Id. Bio, _sto rage. Location); materials [_lot. Id. Bio]. state = Material. State. Inspected; }else{ materials [_lot. Id. Bio]. state = Material. State. Failed. Inspection. Manufacturing; } return true; }
AFTER function Manufacturing. Control(uint is. Valid) public { if(msg. sender == Instance. Owner && State != State. Type. Ready. To. Be. Manufactured) { revert(); } if(is. Valid == 1){ State = State. Type. Manufacturing; Is. Cleaning. Bio = true; } else { State = State. Type. Failed. Manufacturing; Is. Cleaning. Bio = false; } }
Results
Trials and Errors
Questions?
Please evaluate this session Your feedback is important to us! https: //aka. ms/ignite. mobileapp https: //myignite. techcommunity. microsoft. com/evaluations
Find this session in Microsoft Tech Community
- Slides: 16