====== 3.2.2 Agricultural Supply Chain CoI (ASCC) ====== [[dido:public:s_cli:05_contents:02_prt:supply:start| User Scenario: Supply Chain]] As part of the OP, Sal downloads the [[dido:public:ra:xapend:xapend.a_glossary:d:dido_platform|DIDO Platform]] selected by the OPC (we refer to this as DIDO Platform O). The OPC have defined several [[dido:public:ra:xapend:xapend.a_glossary:d:data_object|Data Objects (DOs)]] that they are going to have on their DIDO. When a DO is deployed to a DIDO, it is referred to as a [[dido:public:ra:xapend:xapend.a_glossary:s:smart_contract|Smart Contract]]. ===== 2.1 DO: Participant ===== [[dido:public:s_cli:05_contents:02_prt:supply:03_theory:02_issue:02_ascc:start| Return to Top ]] **Participant** - A Participant is any person or operation that engages with the ASCC. A Participant can have many roles within the ASCC. For example, a producer can also be a handler, a driver, [[dido:public:ra:xapend:xapend.a_glossary:p:processor|processor]] and a packer. * **Note:**Much of the Participant data is covered by privacy laws and rules for [[dido:public:ra:xapend:xapend.a_glossary:p:pii]] such as: * [[dido:public:ra:xapend:xapend.a_glossary:g:dgpr]] * [[dido:public:ra:xapend:xapend.a_glossary:d:dpa]] * [[dido:public:ra:xapend:xapend.a_glossary:c:ccpa]] DEFINE Participant AS OBJECT { firstName TextType NOT NULL PII, middleName TextType NOT NULL PII, lastName TextType NOT NULL PII, streetAddress TextType NOT NULL PII, mobilePhone TextType NOT NULL PII, taxPayerId TextType NOT NULL PII }; DEFINE ORACLE VerifyParticipant SYNCHRONOUS AS ( participant Participant IN, valid BooleanType OUT, queryTimeStamp TimestampType OUT ) { EXECUTE verificationPerson ( participant Participant IN, valid BooleanType OUT, class TextType OUT ); queryTimeStamp TimestampType = CURRENT_TIME; }; ===== 2.2 DO: Role ===== [[dido:public:s_cli:05_contents:02_prt:supply:03_theory:02_issue:02_ascc:start| Return to Top ]] **Role** - The role is the related to the activity the participant performs within the ASCC. As an example, on a small farm, the owner may participate in lots of roles from planting to harvest and even being a broker. DEFINE TYPE RoleType AS ENUM WITH CONSTRAINTS { { 0,"Participant", "Any person or operation engaging with the ASCC" DEFAULT}, { 1, "Cartage"}, "Any person or operation moving things from one geographical position to another"}, { 2, "Handler"}, "Any person or operation coming in direct contact with the products"}, { 3, "Processor", "Any person or operation involved in converting the raw products into finished products"}, { 4, "Packer", "Any person or operation involved in the packing of the product into packages, boxes and pallets"}, { 5, "Broker", "Any person or operation engaged with the selling and buying of the products anywhere along the Supply Chain"}, { 6, "Q&A", "Any person or operation engaged in assessing the quality of the product" }, { 7, "Packer", "Any person or operation involved in packing of the product into packages, boxes and pallets" } } VALUE = DEFAULT; DEFINE Role AS OBJECT { name TextType IS NOT NULL, description TextType IS NOT NULL, kindOfActivity ActivityType IS NOT NULL }; ===== 2.3 DO: Privileges ===== [[dido:public:s_cli:05_contents:02_prt:supply:03_theory:02_issue:02_ascc:start| Return to Top ]] **[[dido:public:ra:xapend:xapend.a_glossary:p:privileges|Privileges]]** - The Privileges should not be confused with the **Roles**. Privileges grant permissions for accessing the DIDOs such as READ, UPDATE, UPLOAD, SEARCH, DELETE. ^ Privilege Type ^ Description ^ | READ | Granting READ privilege allows the access to all the Read attributes or operations associated with the ASCC | | UPDATE | Granting UPDATE privilege allows the access to all the writable attributes or operations associated with the ASCC | | UPLOAD | Granting UPLOAD privilege allows for new content to be added to the ASCC record (i.e., images, invoices, [[dido:public:ra:xapend:xapend.a_glossary:b:bol]], etc. | | SEARCH | Granting SEARCH privilege allows for the Read attributes or operations to be searched for particular strings. It only returns a TRUE or FALSE. All [[dido:public:ra:xapend:xapend.a_glossary:p:pii]] can be hidden from the search. | | DELETE | Granting DELETE privilege allows for the content of the Participant record to be marked as deleted OR optionally for the content to be burned by destroying the [[dido:public:ra:xapend:xapend.a_glossary:p:private_key|private key]] | MANAGE GRANT { Participant : { "id" : "0xDC25EF3F5B8A186998338A2ADA83795FBA2D695E", "by" : "0xDC25EF3F5B8A186998338A2ADA83795FBA2D695E", "Cartage" : "READ, UPDATE, UPLOAD" } } MANAGE GRANT { Participant : { "id" : "0xDC25EF3F5B8A186998338A2ADA83795FBA2D695E", "by" : "0xDC25EF3F5B8A186998338A2ADA83795FBA2D695E", "Packer" : "SEARCH" } } ===== 2.4 DO: Cartage ===== [[dido:public:s_cli:05_contents:02_prt:supply:03_theory:02_issue:02_ascc:start| Return to Top ]] **Cartage** - The Cartage is the process of moving things from one geographical position to another. This includes the small delivery trucks that can be used at either end of the [[dido:public:ra:xapend:xapend.a_glossary:s:supplychain|Supply Chain]] or the long and short haul trucks. This also covers the Drivers, however, each state has its own driver license classification(( AAA, __Types of Driver's Licenses__, Accessed: 18 May 2021, [[https://drivinglaws.aaa.com/tag/types-of-drivers-licenses/]] )) DEFINE TYPE TruckClassificationType AS ENUM WITH CONSTRAINTS { { 1, "Class 1", "GVWRs < 6,000 lbs" DEFAULT}, { 2, "Class 2", "GVWRs 6,001 to 10,000 pounds" }, { 3, "Class 3", "GVWRs 10,001 to 14,000 pounds" }, { 4, "Class 4", "GVWRs 14,001 and 16,000 pounds" }, { 5, "Class 5", "GVWRs 6,001 to 19,500 pounds" }, { 6, "Class 6", "GVWRs 19,501 and 26,000 pounds" }, { 7, "Class 7", "GVWRs 26,001 and 33,000 pounds (usually have three axles or more)" }, { 8, "Class 8", "GVWRs over 33,001 pounds" }, } VALUE = DEFAULT; DEFINE TYPE CaDriversClassicationType AS ENUM WITH CONSTRAINTS { { 1, "Class A", DEFAULT}, { 2, "Class B"}, { 2, "Class C"}, { 2, "Class M1"}, { 2, "Class M2"}, Value = DEFAULT; DEFINE Truck AS OBJECT { vin TextType, manufacturer TextType, gvw PositiveWholeNumber, numberOfAxels PositiveWholeNumber, dotNumber TextType, mcNumber TextType }; DEFINE ORACLE VerifyDriver SYNCHRONOUS AS ( driver Driver IN, valid BooleanType OUT, class TextType OUT, queryTimeStamp TimestampType OUT ) { EXECUTE verificationProcedure ( driver Driver IN, valid BooleanType OUT, class TextType OUT ); queryTimeStamp TimestampType = CURRENT_TIME; }; DEFINE Trailer AS OBJECT { vin TextType, manufacturer TextType, gvw PositiveWholeNumber, numberOfAxels PositiveWholeNumber }; DEFINE Driver AS OBJECT { driverLicenseNumber TextType, stateOfIssue TextType, dateOfBirth DateTimeValue, expirationDate DateTimeValue }; ===== 2.5 DO: Transport ===== [[dido:public:s_cli:05_contents:02_prt:supply:03_theory:02_issue:02_ascc:start| Return to Top ]] **Transport** - Transportation vehicles should be clean and sanitary. Co-mingling of organic and non-organic fruits and vegetables is prohibited unless organic products are protected from contact with prohibited substances. See [[dido:public:ra:xapend:xapend.a_glossary:b:bol]]. DEFINE TYPE TransportModeType AS ENUM WITH CONSTRAINTS { { 1, "Road", DEFAULT}, { 2, "Rail"}, { 3, "Air"}, { 4, "Sea"}, { 5, "Bicycle"}, { 6, "Motorcycle"}, { 7, "Horse"}, { 8, "Other"}, Value = DEFAULT; DEFINE TYPE Incoterms AS ENUM WITH CONSTRAINTS { { 1, "EXW", "Ex Works", DEFAULT}, { 2, "FCA", "Free Carrier"}, { 3, "CPT", "Carriage Paid To"}, { 4, "CIP", "Carriage and Insurance Paid To"}, { 5, "DPU", "Delivered at Place Unloaded"}, { 6, "DAP", "Delivered at Place"}, { 7, "DDP", "Delivered Duty Paid"}, { 8, "FAS", "Free Alongside Ship"}, { 8, "FOB", "Free on Board"}, { 8, "CFR", "Cost and Freight"}, { 8, "CIF", "Cost, Insurance, and Freight"}, Value = DEFAULT; DEFINE TYPE KindsOfShippingUnits AS ENUM WITH CONSTRAINTS { { 1, "boxes", DEFAULT}, { 2, "pallets"} } DEFINE LineItemType AS OBJECT { lineItemNumber PositiveWholeNumber, description TextType, kindsOfUnits KindsOfShippingUnits, numberOfUnits PositiveWholeNumber, weight PositiveWholeNumber }; DEFINE BillOfLading AS OBJECT { transportCompanyName TextType, loadingSite GeolocationType, destination GeolocationType, mode TransportModeType, incoterms Incoterms, lineItemType LineItemType[] }; DEFINE DeliveryVehicle AS OBJECT { truck Truck, trailer Trailer, driver Driver, billOfLading BillOfLading }; ===== 2.6 DO: Handler ===== [[dido:public:s_cli:05_contents:02_prt:supply:03_theory:02_issue:02_ascc:start| Return to Top ]] **Handler** - Anyone who comes in direct contact with the products such as farm hands, warehouse workers, processors, packers, etc. Some Participants many not be handlers (i.e., the brokers). ===== 2.7 DO: Storage ===== [[dido:public:s_cli:05_contents:02_prt:supply:03_theory:02_issue:02_ascc:start| Return to Top ]] **Storage** - Storage is any place where the Supplies are kept while not being transported. For food, there are different kinds of Cold Storage based on what is being stored (i.e., ===== 2.8 DO: Processor ===== [[dido:public:s_cli:05_contents:02_prt:supply:03_theory:02_issue:02_ascc:start| Return to Top ]] **Processor** - The Processors are the people involved in converting the raw products into finished products. For example, for strawberries it might be the washers, de-stemmers, and initial quality control to remove damaged or bad fruit. ===== 2.9 DO: Packer ===== [[dido:public:s_cli:05_contents:02_prt:supply:03_theory:02_issue:02_ascc:start| Return to Top ]] **Packer** - These are the people involved in the packing of the product into packages, boxes and pallets ===== 2.10 DO: Broker ===== [[dido:public:s_cli:05_contents:02_prt:supply:03_theory:02_issue:02_ascc:start| Return to Top ]] **Broker** - These are the people that are engaged with the selling and buying of the products anywhere along the Supply Chain. The more the Supply Chain is added to a [[dido:public:ra:xapend:xapend.a_glossary:v:valuechain|Value Chain]], the fewer brokers that involved. ===== 2.11 DO: Quality Assurance and Inspection ===== [[dido:public:s_cli:05_contents:02_prt:supply:03_theory:02_issue:02_ascc:start| Return to Top ]] **Quality Assurance and Inspection** - These are people that are engaged in assessing the quality of the product. They are also responsible for grading the products (U.S. Grade A or U.S. Fancy, U.S. Grade B or U.S. Choice, U.S. Grade C or U.S. Standard, or substandard. (( U.S. Department of Agriculture, __Grades of Frozen Strawberries__, Accessed: 18 May 2021, [[https://www.ams.usda.gov/grades-standards/frozen-strawberries-grades-and-standards]] )) ===== 2.12 DO: Retail Outlet Provider ===== [[dido:public:s_cli:05_contents:02_prt:supply:03_theory:02_issue:02_ascc:start| Return to Top ]] **Retail Outlet Provider** - A Retail Outlet Provider person or establishment that sells the produce directly to the Human Consumers. Some examples are grocery stores, fruit stands, convenient stores, kiosks, etc. ===== 2.13 DO: Discretionary Providers ===== [[dido:public:s_cli:05_contents:02_prt:supply:03_theory:02_issue:02_ascc:start| Return to Top ]] **Discretionary Providers** - A Discretionary Providers are places where the products are sold as part of something else to the Human Consumers. Some examples are restaurants, ice-cream stores, etc. ===== 2.14 DO: Human Consumer ===== [[dido:public:s_cli:05_contents:02_prt:supply:03_theory:02_issue:02_ascc:start| Return to Top ]] **Human Consumer** - The Human Consumers are the people that actually buy the products and consume them. ===== 2.15 DO: Processing Consumer ===== [[dido:public:s_cli:05_contents:02_prt:supply:03_theory:02_issue:02_ascc:start| Return to Top ]] **Processing Consumer** - The Processing Consumers are people or establishments that buy the products and further process them into other products such as ice-cream products, jams, jellies, or candies. /**=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- /* To add a discussion page to this page, comment out the line that says ~~DISCUSSION:off~~ */ ~~DISCUSSION:on|Outstanding Issues~~ ~~DISCUSSION:off~~