====== 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~~