acryl-datahub-cloud 0.3.13rc2__py3-none-any.whl → 0.3.13rc4__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of acryl-datahub-cloud might be problematic. Click here for more details.
- acryl_datahub_cloud/_codegen_config.json +1 -1
- acryl_datahub_cloud/metadata/_urns/urn_defs.py +56 -0
- acryl_datahub_cloud/metadata/com/linkedin/pegasus2avro/actionworkflow/__init__.py +53 -0
- acryl_datahub_cloud/metadata/com/linkedin/pegasus2avro/metadata/key/__init__.py +2 -0
- acryl_datahub_cloud/metadata/schema.avsc +666 -33
- acryl_datahub_cloud/metadata/schema_classes.py +1077 -1
- acryl_datahub_cloud/metadata/schemas/ActionRequestInfo.avsc +136 -1
- acryl_datahub_cloud/metadata/schemas/ActionWorkflowInfo.avsc +683 -0
- acryl_datahub_cloud/metadata/schemas/ActionWorkflowKey.avsc +21 -0
- acryl_datahub_cloud/metadata/schemas/MetadataChangeEvent.avsc +136 -1
- acryl_datahub_cloud/metadata/schemas/NotificationRequest.avsc +4 -0
- {acryl_datahub_cloud-0.3.13rc2.dist-info → acryl_datahub_cloud-0.3.13rc4.dist-info}/METADATA +45 -45
- {acryl_datahub_cloud-0.3.13rc2.dist-info → acryl_datahub_cloud-0.3.13rc4.dist-info}/RECORD +16 -13
- {acryl_datahub_cloud-0.3.13rc2.dist-info → acryl_datahub_cloud-0.3.13rc4.dist-info}/WHEEL +0 -0
- {acryl_datahub_cloud-0.3.13rc2.dist-info → acryl_datahub_cloud-0.3.13rc4.dist-info}/entry_points.txt +0 -0
- {acryl_datahub_cloud-0.3.13rc2.dist-info → acryl_datahub_cloud-0.3.13rc4.dist-info}/top_level.txt +0 -0
|
@@ -767,7 +767,7 @@ class ActionRequestInfoClass(_Aspect):
|
|
|
767
767
|
|
|
768
768
|
@property
|
|
769
769
|
def type(self) -> str:
|
|
770
|
-
"""The type of the action request, for example 'TAG_ASSOCIATION'"""
|
|
770
|
+
"""The type of the action request, for example 'TAG_ASSOCIATION', 'WORKFLOW_FORM_REQUEST'"""
|
|
771
771
|
return self._inner_dict.get('type') # type: ignore
|
|
772
772
|
|
|
773
773
|
@type.setter
|
|
@@ -948,6 +948,7 @@ class ActionRequestParamsClass(DictWrapper):
|
|
|
948
948
|
createGlossaryNodeProposal: Union[None, "CreateGlossaryNodeProposalClass"]=None,
|
|
949
949
|
updateDescriptionProposal: Union[None, "DescriptionProposalClass"]=None,
|
|
950
950
|
dataContractProposal: Union[None, "DataContractProposalClass"]=None,
|
|
951
|
+
workflowFormRequest: Union[None, "ActionWorkflowFormRequestClass"]=None,
|
|
951
952
|
):
|
|
952
953
|
super().__init__()
|
|
953
954
|
|
|
@@ -960,6 +961,7 @@ class ActionRequestParamsClass(DictWrapper):
|
|
|
960
961
|
self.createGlossaryNodeProposal = createGlossaryNodeProposal
|
|
961
962
|
self.updateDescriptionProposal = updateDescriptionProposal
|
|
962
963
|
self.dataContractProposal = dataContractProposal
|
|
964
|
+
self.workflowFormRequest = workflowFormRequest
|
|
963
965
|
|
|
964
966
|
def _restore_defaults(self) -> None:
|
|
965
967
|
self.glossaryTermProposal = self.RECORD_SCHEMA.fields_dict["glossaryTermProposal"].default
|
|
@@ -971,6 +973,7 @@ class ActionRequestParamsClass(DictWrapper):
|
|
|
971
973
|
self.createGlossaryNodeProposal = self.RECORD_SCHEMA.fields_dict["createGlossaryNodeProposal"].default
|
|
972
974
|
self.updateDescriptionProposal = self.RECORD_SCHEMA.fields_dict["updateDescriptionProposal"].default
|
|
973
975
|
self.dataContractProposal = self.RECORD_SCHEMA.fields_dict["dataContractProposal"].default
|
|
976
|
+
self.workflowFormRequest = self.RECORD_SCHEMA.fields_dict["workflowFormRequest"].default
|
|
974
977
|
|
|
975
978
|
|
|
976
979
|
@property
|
|
@@ -1065,6 +1068,16 @@ class ActionRequestParamsClass(DictWrapper):
|
|
|
1065
1068
|
self._inner_dict['dataContractProposal'] = value
|
|
1066
1069
|
|
|
1067
1070
|
|
|
1071
|
+
@property
|
|
1072
|
+
def workflowFormRequest(self) -> Union[None, "ActionWorkflowFormRequestClass"]:
|
|
1073
|
+
"""An action workflow form request."""
|
|
1074
|
+
return self._inner_dict.get('workflowFormRequest') # type: ignore
|
|
1075
|
+
|
|
1076
|
+
@workflowFormRequest.setter
|
|
1077
|
+
def workflowFormRequest(self, value: Union[None, "ActionWorkflowFormRequestClass"]) -> None:
|
|
1078
|
+
self._inner_dict['workflowFormRequest'] = value
|
|
1079
|
+
|
|
1080
|
+
|
|
1068
1081
|
class ActionRequestStatusClass(_Aspect):
|
|
1069
1082
|
"""The status of the action request - e.g. accepted, rejected, pending, etc"""
|
|
1070
1083
|
|
|
@@ -1498,6 +1511,985 @@ class TagProposalClass(DictWrapper):
|
|
|
1498
1511
|
self._inner_dict['tags'] = value
|
|
1499
1512
|
|
|
1500
1513
|
|
|
1514
|
+
class ActionWorkflowCategoryClass(object):
|
|
1515
|
+
# No docs available.
|
|
1516
|
+
|
|
1517
|
+
ACCESS = "ACCESS"
|
|
1518
|
+
"""Workflow for requesting access to a resource, such as a dataset or data job.
|
|
1519
|
+
Requires the `access` field to be populated with specific access parameters."""
|
|
1520
|
+
|
|
1521
|
+
CUSTOM = "CUSTOM"
|
|
1522
|
+
"""Custom, non-access related workflow. For example, may be used to model workflows like
|
|
1523
|
+
asset creation, asset cleanup or deletion, etc."""
|
|
1524
|
+
|
|
1525
|
+
|
|
1526
|
+
|
|
1527
|
+
class ActionWorkflowEntrypointClass(DictWrapper):
|
|
1528
|
+
"""The entry point arguments for the action request workflowform.
|
|
1529
|
+
In the future, we may extend this model to support more granular entry point filters."""
|
|
1530
|
+
|
|
1531
|
+
RECORD_SCHEMA = get_schema_type("com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowEntrypoint")
|
|
1532
|
+
def __init__(self,
|
|
1533
|
+
type: Union[str, "ActionWorkflowEntrypointTypeClass"],
|
|
1534
|
+
label: str,
|
|
1535
|
+
filter: Union[None, "FilterClass"]=None,
|
|
1536
|
+
):
|
|
1537
|
+
super().__init__()
|
|
1538
|
+
|
|
1539
|
+
self.type = type
|
|
1540
|
+
self.label = label
|
|
1541
|
+
self.filter = filter
|
|
1542
|
+
|
|
1543
|
+
def _restore_defaults(self) -> None:
|
|
1544
|
+
self.type = ActionWorkflowEntrypointTypeClass.HOME
|
|
1545
|
+
self.label = str()
|
|
1546
|
+
self.filter = self.RECORD_SCHEMA.fields_dict["filter"].default
|
|
1547
|
+
|
|
1548
|
+
|
|
1549
|
+
@property
|
|
1550
|
+
def type(self) -> Union[str, "ActionWorkflowEntrypointTypeClass"]:
|
|
1551
|
+
"""The type of entry point for the action request workflow.
|
|
1552
|
+
This determines where the action request workflow will be displayed."""
|
|
1553
|
+
return self._inner_dict.get('type') # type: ignore
|
|
1554
|
+
|
|
1555
|
+
@type.setter
|
|
1556
|
+
def type(self, value: Union[str, "ActionWorkflowEntrypointTypeClass"]) -> None:
|
|
1557
|
+
self._inner_dict['type'] = value
|
|
1558
|
+
|
|
1559
|
+
|
|
1560
|
+
@property
|
|
1561
|
+
def label(self) -> str:
|
|
1562
|
+
"""The label for the entry point, which is displayed to users.
|
|
1563
|
+
This should be a user-friendly name that describes the action request."""
|
|
1564
|
+
return self._inner_dict.get('label') # type: ignore
|
|
1565
|
+
|
|
1566
|
+
@label.setter
|
|
1567
|
+
def label(self, value: str) -> None:
|
|
1568
|
+
self._inner_dict['label'] = value
|
|
1569
|
+
|
|
1570
|
+
|
|
1571
|
+
@property
|
|
1572
|
+
def filter(self) -> Union[None, "FilterClass"]:
|
|
1573
|
+
"""Additional filter criteria to determine when the entry point should be displayed.
|
|
1574
|
+
|
|
1575
|
+
Not yet supported (but will be in the future)."""
|
|
1576
|
+
return self._inner_dict.get('filter') # type: ignore
|
|
1577
|
+
|
|
1578
|
+
@filter.setter
|
|
1579
|
+
def filter(self, value: Union[None, "FilterClass"]) -> None:
|
|
1580
|
+
self._inner_dict['filter'] = value
|
|
1581
|
+
|
|
1582
|
+
|
|
1583
|
+
class ActionWorkflowEntrypointTypeClass(object):
|
|
1584
|
+
# No docs available.
|
|
1585
|
+
|
|
1586
|
+
HOME = "HOME"
|
|
1587
|
+
""" Visible on the home page to all users. """
|
|
1588
|
+
|
|
1589
|
+
ENTITY_PROFILE = "ENTITY_PROFILE"
|
|
1590
|
+
""" Visible on the entity profile page. For all valid entity types specified in the parent object. """
|
|
1591
|
+
|
|
1592
|
+
|
|
1593
|
+
|
|
1594
|
+
class ActionWorkflowFieldClass(DictWrapper):
|
|
1595
|
+
"""A field inside an Action Workflow Form."""
|
|
1596
|
+
|
|
1597
|
+
RECORD_SCHEMA = get_schema_type("com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowField")
|
|
1598
|
+
def __init__(self,
|
|
1599
|
+
id: str,
|
|
1600
|
+
name: str,
|
|
1601
|
+
valueType: str,
|
|
1602
|
+
cardinality: Union[str, "PropertyCardinalityClass"],
|
|
1603
|
+
description: Union[None, str]=None,
|
|
1604
|
+
allowedEntityTypes: Union[None, List[str]]=None,
|
|
1605
|
+
allowedValues: Union[None, List["PropertyValueClass"]]=None,
|
|
1606
|
+
required: Optional[bool]=None,
|
|
1607
|
+
condition: Union[None, "ActionWorkflowFieldConditionClass"]=None,
|
|
1608
|
+
):
|
|
1609
|
+
super().__init__()
|
|
1610
|
+
|
|
1611
|
+
self.id = id
|
|
1612
|
+
self.name = name
|
|
1613
|
+
self.description = description
|
|
1614
|
+
self.valueType = valueType
|
|
1615
|
+
self.allowedEntityTypes = allowedEntityTypes
|
|
1616
|
+
self.allowedValues = allowedValues
|
|
1617
|
+
self.cardinality = cardinality
|
|
1618
|
+
if required is None:
|
|
1619
|
+
# default: False
|
|
1620
|
+
self.required = self.RECORD_SCHEMA.fields_dict["required"].default
|
|
1621
|
+
else:
|
|
1622
|
+
self.required = required
|
|
1623
|
+
self.condition = condition
|
|
1624
|
+
|
|
1625
|
+
def _restore_defaults(self) -> None:
|
|
1626
|
+
self.id = str()
|
|
1627
|
+
self.name = str()
|
|
1628
|
+
self.description = self.RECORD_SCHEMA.fields_dict["description"].default
|
|
1629
|
+
self.valueType = str()
|
|
1630
|
+
self.allowedEntityTypes = self.RECORD_SCHEMA.fields_dict["allowedEntityTypes"].default
|
|
1631
|
+
self.allowedValues = self.RECORD_SCHEMA.fields_dict["allowedValues"].default
|
|
1632
|
+
self.cardinality = PropertyCardinalityClass.SINGLE
|
|
1633
|
+
self.required = self.RECORD_SCHEMA.fields_dict["required"].default
|
|
1634
|
+
self.condition = self.RECORD_SCHEMA.fields_dict["condition"].default
|
|
1635
|
+
|
|
1636
|
+
|
|
1637
|
+
@property
|
|
1638
|
+
def id(self) -> str:
|
|
1639
|
+
"""Workflow-local id for the field"""
|
|
1640
|
+
return self._inner_dict.get('id') # type: ignore
|
|
1641
|
+
|
|
1642
|
+
@id.setter
|
|
1643
|
+
def id(self, value: str) -> None:
|
|
1644
|
+
self._inner_dict['id'] = value
|
|
1645
|
+
|
|
1646
|
+
|
|
1647
|
+
@property
|
|
1648
|
+
def name(self) -> str:
|
|
1649
|
+
"""The display name or label for the field, for rendering"""
|
|
1650
|
+
return self._inner_dict.get('name') # type: ignore
|
|
1651
|
+
|
|
1652
|
+
@name.setter
|
|
1653
|
+
def name(self, value: str) -> None:
|
|
1654
|
+
self._inner_dict['name'] = value
|
|
1655
|
+
|
|
1656
|
+
|
|
1657
|
+
@property
|
|
1658
|
+
def description(self) -> Union[None, str]:
|
|
1659
|
+
"""The description for the field, for rendering"""
|
|
1660
|
+
return self._inner_dict.get('description') # type: ignore
|
|
1661
|
+
|
|
1662
|
+
@description.setter
|
|
1663
|
+
def description(self, value: Union[None, str]) -> None:
|
|
1664
|
+
self._inner_dict['description'] = value
|
|
1665
|
+
|
|
1666
|
+
|
|
1667
|
+
@property
|
|
1668
|
+
def valueType(self) -> str:
|
|
1669
|
+
"""The urn of the value type for the values - reused from structured properties.
|
|
1670
|
+
Also, used for rendering"""
|
|
1671
|
+
return self._inner_dict.get('valueType') # type: ignore
|
|
1672
|
+
|
|
1673
|
+
@valueType.setter
|
|
1674
|
+
def valueType(self, value: str) -> None:
|
|
1675
|
+
self._inner_dict['valueType'] = value
|
|
1676
|
+
|
|
1677
|
+
|
|
1678
|
+
@property
|
|
1679
|
+
def allowedEntityTypes(self) -> Union[None, List[str]]:
|
|
1680
|
+
"""The urns for allowed entity types."""
|
|
1681
|
+
return self._inner_dict.get('allowedEntityTypes') # type: ignore
|
|
1682
|
+
|
|
1683
|
+
@allowedEntityTypes.setter
|
|
1684
|
+
def allowedEntityTypes(self, value: Union[None, List[str]]) -> None:
|
|
1685
|
+
self._inner_dict['allowedEntityTypes'] = value
|
|
1686
|
+
|
|
1687
|
+
|
|
1688
|
+
@property
|
|
1689
|
+
def allowedValues(self) -> Union[None, List["PropertyValueClass"]]:
|
|
1690
|
+
"""A list of allowed values that the property is allowed to take.
|
|
1691
|
+
If this is not specified, then the property can take any value of given type."""
|
|
1692
|
+
return self._inner_dict.get('allowedValues') # type: ignore
|
|
1693
|
+
|
|
1694
|
+
@allowedValues.setter
|
|
1695
|
+
def allowedValues(self, value: Union[None, List["PropertyValueClass"]]) -> None:
|
|
1696
|
+
self._inner_dict['allowedValues'] = value
|
|
1697
|
+
|
|
1698
|
+
|
|
1699
|
+
@property
|
|
1700
|
+
def cardinality(self) -> Union[str, "PropertyCardinalityClass"]:
|
|
1701
|
+
"""Whether or not multiple values are allowed."""
|
|
1702
|
+
return self._inner_dict.get('cardinality') # type: ignore
|
|
1703
|
+
|
|
1704
|
+
@cardinality.setter
|
|
1705
|
+
def cardinality(self, value: Union[str, "PropertyCardinalityClass"]) -> None:
|
|
1706
|
+
self._inner_dict['cardinality'] = value
|
|
1707
|
+
|
|
1708
|
+
|
|
1709
|
+
@property
|
|
1710
|
+
def required(self) -> bool:
|
|
1711
|
+
"""Whether the field is required or not."""
|
|
1712
|
+
return self._inner_dict.get('required') # type: ignore
|
|
1713
|
+
|
|
1714
|
+
@required.setter
|
|
1715
|
+
def required(self, value: bool) -> None:
|
|
1716
|
+
self._inner_dict['required'] = value
|
|
1717
|
+
|
|
1718
|
+
|
|
1719
|
+
@property
|
|
1720
|
+
def condition(self) -> Union[None, "ActionWorkflowFieldConditionClass"]:
|
|
1721
|
+
"""A dynamic condition that determines whether the field should be shown or not."""
|
|
1722
|
+
return self._inner_dict.get('condition') # type: ignore
|
|
1723
|
+
|
|
1724
|
+
@condition.setter
|
|
1725
|
+
def condition(self, value: Union[None, "ActionWorkflowFieldConditionClass"]) -> None:
|
|
1726
|
+
self._inner_dict['condition'] = value
|
|
1727
|
+
|
|
1728
|
+
|
|
1729
|
+
class ActionWorkflowFieldConditionClass(DictWrapper):
|
|
1730
|
+
"""A condition that determines whether a form field should be shown in the action workflow.
|
|
1731
|
+
This may evolve in the future to have additional condition types."""
|
|
1732
|
+
|
|
1733
|
+
RECORD_SCHEMA = get_schema_type("com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowFieldCondition")
|
|
1734
|
+
def __init__(self,
|
|
1735
|
+
type: Union[str, "ActionWorkflowFieldConditionTypeClass"],
|
|
1736
|
+
singleFieldValueCondition: Union[None, "ActionWorkflowSingleFieldValueConditionClass"]=None,
|
|
1737
|
+
):
|
|
1738
|
+
super().__init__()
|
|
1739
|
+
|
|
1740
|
+
self.type = type
|
|
1741
|
+
self.singleFieldValueCondition = singleFieldValueCondition
|
|
1742
|
+
|
|
1743
|
+
def _restore_defaults(self) -> None:
|
|
1744
|
+
self.type = ActionWorkflowFieldConditionTypeClass.SINGLE_FIELD_VALUE
|
|
1745
|
+
self.singleFieldValueCondition = self.RECORD_SCHEMA.fields_dict["singleFieldValueCondition"].default
|
|
1746
|
+
|
|
1747
|
+
|
|
1748
|
+
@property
|
|
1749
|
+
def type(self) -> Union[str, "ActionWorkflowFieldConditionTypeClass"]:
|
|
1750
|
+
"""The type of field condition"""
|
|
1751
|
+
return self._inner_dict.get('type') # type: ignore
|
|
1752
|
+
|
|
1753
|
+
@type.setter
|
|
1754
|
+
def type(self, value: Union[str, "ActionWorkflowFieldConditionTypeClass"]) -> None:
|
|
1755
|
+
self._inner_dict['type'] = value
|
|
1756
|
+
|
|
1757
|
+
|
|
1758
|
+
@property
|
|
1759
|
+
def singleFieldValueCondition(self) -> Union[None, "ActionWorkflowSingleFieldValueConditionClass"]:
|
|
1760
|
+
"""A field value condition. Present if type is FIELD_VALUE."""
|
|
1761
|
+
return self._inner_dict.get('singleFieldValueCondition') # type: ignore
|
|
1762
|
+
|
|
1763
|
+
@singleFieldValueCondition.setter
|
|
1764
|
+
def singleFieldValueCondition(self, value: Union[None, "ActionWorkflowSingleFieldValueConditionClass"]) -> None:
|
|
1765
|
+
self._inner_dict['singleFieldValueCondition'] = value
|
|
1766
|
+
|
|
1767
|
+
|
|
1768
|
+
class ActionWorkflowFieldConditionTypeClass(object):
|
|
1769
|
+
# No docs available.
|
|
1770
|
+
|
|
1771
|
+
SINGLE_FIELD_VALUE = "SINGLE_FIELD_VALUE"
|
|
1772
|
+
"""The field should be shown if the value of a previously completed field matches the specified value."""
|
|
1773
|
+
|
|
1774
|
+
|
|
1775
|
+
|
|
1776
|
+
class ActionWorkflowFormClass(DictWrapper):
|
|
1777
|
+
# No docs available.
|
|
1778
|
+
|
|
1779
|
+
RECORD_SCHEMA = get_schema_type("com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowForm")
|
|
1780
|
+
def __init__(self,
|
|
1781
|
+
entrypoints: List["ActionWorkflowEntrypointClass"],
|
|
1782
|
+
fields: List["ActionWorkflowFieldClass"],
|
|
1783
|
+
entityTypes: Union[None, List[str]]=None,
|
|
1784
|
+
):
|
|
1785
|
+
super().__init__()
|
|
1786
|
+
|
|
1787
|
+
self.entrypoints = entrypoints
|
|
1788
|
+
self.entityTypes = entityTypes
|
|
1789
|
+
self.fields = fields
|
|
1790
|
+
|
|
1791
|
+
def _restore_defaults(self) -> None:
|
|
1792
|
+
self.entrypoints = list()
|
|
1793
|
+
self.entityTypes = self.RECORD_SCHEMA.fields_dict["entityTypes"].default
|
|
1794
|
+
self.fields = list()
|
|
1795
|
+
|
|
1796
|
+
|
|
1797
|
+
@property
|
|
1798
|
+
def entrypoints(self) -> List["ActionWorkflowEntrypointClass"]:
|
|
1799
|
+
"""Entrypoints for form submission."""
|
|
1800
|
+
return self._inner_dict.get('entrypoints') # type: ignore
|
|
1801
|
+
|
|
1802
|
+
@entrypoints.setter
|
|
1803
|
+
def entrypoints(self, value: List["ActionWorkflowEntrypointClass"]) -> None:
|
|
1804
|
+
self._inner_dict['entrypoints'] = value
|
|
1805
|
+
|
|
1806
|
+
|
|
1807
|
+
@property
|
|
1808
|
+
def entityTypes(self) -> Union[None, List[str]]:
|
|
1809
|
+
"""The valid entity type URNs that can be associated with a Workflow Form.
|
|
1810
|
+
If provided, this will require that an entity of one of the provided types is specified when completing the form.
|
|
1811
|
+
|
|
1812
|
+
If no entity types are provided, the workflow form can be submitted without specifying an entity. In general, this should
|
|
1813
|
+
be populated for workflows of type ACCESS to enable users to request access to a specific entity!
|
|
1814
|
+
|
|
1815
|
+
If specified, the associated action requests for this workflow will contain an URN of the corresponding type inside of
|
|
1816
|
+
the `resource` field.
|
|
1817
|
+
|
|
1818
|
+
Note that associating multiple entities with a single Action Request is not yet supported."""
|
|
1819
|
+
return self._inner_dict.get('entityTypes') # type: ignore
|
|
1820
|
+
|
|
1821
|
+
@entityTypes.setter
|
|
1822
|
+
def entityTypes(self, value: Union[None, List[str]]) -> None:
|
|
1823
|
+
self._inner_dict['entityTypes'] = value
|
|
1824
|
+
|
|
1825
|
+
|
|
1826
|
+
@property
|
|
1827
|
+
def fields(self) -> List["ActionWorkflowFieldClass"]:
|
|
1828
|
+
"""Fields comprising the workflow request. These are the inputs / arguments required to trigger the workflow."""
|
|
1829
|
+
return self._inner_dict.get('fields') # type: ignore
|
|
1830
|
+
|
|
1831
|
+
@fields.setter
|
|
1832
|
+
def fields(self, value: List["ActionWorkflowFieldClass"]) -> None:
|
|
1833
|
+
self._inner_dict['fields'] = value
|
|
1834
|
+
|
|
1835
|
+
|
|
1836
|
+
class ActionWorkflowFormRequestClass(DictWrapper):
|
|
1837
|
+
"""A request for an access workflow form to be reviewed.
|
|
1838
|
+
|
|
1839
|
+
For an access workflow of trigger type FORM, this action request currently represents the "state"
|
|
1840
|
+
of the workflow instance.
|
|
1841
|
+
|
|
1842
|
+
In the future, we may add more features like due dates, escalations, etc.
|
|
1843
|
+
Ideally, for now we are keeping these out of here."""
|
|
1844
|
+
|
|
1845
|
+
RECORD_SCHEMA = get_schema_type("com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowFormRequest")
|
|
1846
|
+
def __init__(self,
|
|
1847
|
+
workflow: str,
|
|
1848
|
+
category: Union[str, "ActionWorkflowCategoryClass"],
|
|
1849
|
+
fields: List["ActionWorkflowFormRequestFieldClass"],
|
|
1850
|
+
stepState: "ActionWorkflowRequestStepStateClass",
|
|
1851
|
+
customCategory: Union[None, str]=None,
|
|
1852
|
+
access: Union[None, "ActionWorkflowRequestAccessClass"]=None,
|
|
1853
|
+
):
|
|
1854
|
+
super().__init__()
|
|
1855
|
+
|
|
1856
|
+
self.workflow = workflow
|
|
1857
|
+
self.category = category
|
|
1858
|
+
self.customCategory = customCategory
|
|
1859
|
+
self.fields = fields
|
|
1860
|
+
self.access = access
|
|
1861
|
+
self.stepState = stepState
|
|
1862
|
+
|
|
1863
|
+
def _restore_defaults(self) -> None:
|
|
1864
|
+
self.workflow = str()
|
|
1865
|
+
self.category = ActionWorkflowCategoryClass.ACCESS
|
|
1866
|
+
self.customCategory = self.RECORD_SCHEMA.fields_dict["customCategory"].default
|
|
1867
|
+
self.fields = list()
|
|
1868
|
+
self.access = self.RECORD_SCHEMA.fields_dict["access"].default
|
|
1869
|
+
self.stepState = ActionWorkflowRequestStepStateClass._construct_with_defaults()
|
|
1870
|
+
|
|
1871
|
+
|
|
1872
|
+
@property
|
|
1873
|
+
def workflow(self) -> str:
|
|
1874
|
+
"""The urn of the associated access request workflow."""
|
|
1875
|
+
return self._inner_dict.get('workflow') # type: ignore
|
|
1876
|
+
|
|
1877
|
+
@workflow.setter
|
|
1878
|
+
def workflow(self, value: str) -> None:
|
|
1879
|
+
self._inner_dict['workflow'] = value
|
|
1880
|
+
|
|
1881
|
+
|
|
1882
|
+
@property
|
|
1883
|
+
def category(self) -> Union[str, "ActionWorkflowCategoryClass"]:
|
|
1884
|
+
"""The category of the workflow.
|
|
1885
|
+
Primarily used for searching / filtering action requests."""
|
|
1886
|
+
return self._inner_dict.get('category') # type: ignore
|
|
1887
|
+
|
|
1888
|
+
@category.setter
|
|
1889
|
+
def category(self, value: Union[str, "ActionWorkflowCategoryClass"]) -> None:
|
|
1890
|
+
self._inner_dict['category'] = value
|
|
1891
|
+
|
|
1892
|
+
|
|
1893
|
+
@property
|
|
1894
|
+
def customCategory(self) -> Union[None, str]:
|
|
1895
|
+
"""The custom category of the workflow, if category is custom.
|
|
1896
|
+
Primarily used for searching / filtering action requests."""
|
|
1897
|
+
return self._inner_dict.get('customCategory') # type: ignore
|
|
1898
|
+
|
|
1899
|
+
@customCategory.setter
|
|
1900
|
+
def customCategory(self, value: Union[None, str]) -> None:
|
|
1901
|
+
self._inner_dict['customCategory'] = value
|
|
1902
|
+
|
|
1903
|
+
|
|
1904
|
+
@property
|
|
1905
|
+
def fields(self) -> List["ActionWorkflowFormRequestFieldClass"]:
|
|
1906
|
+
"""Custom fields provided by the user making the request if the action request is of type FORM_SUBMITTED
|
|
1907
|
+
Eventually, these may need to become search indexed. For now, not indexed."""
|
|
1908
|
+
return self._inner_dict.get('fields') # type: ignore
|
|
1909
|
+
|
|
1910
|
+
@fields.setter
|
|
1911
|
+
def fields(self, value: List["ActionWorkflowFormRequestFieldClass"]) -> None:
|
|
1912
|
+
self._inner_dict['fields'] = value
|
|
1913
|
+
|
|
1914
|
+
|
|
1915
|
+
@property
|
|
1916
|
+
def access(self) -> Union[None, "ActionWorkflowRequestAccessClass"]:
|
|
1917
|
+
"""Details specific for access request workflow requests."""
|
|
1918
|
+
return self._inner_dict.get('access') # type: ignore
|
|
1919
|
+
|
|
1920
|
+
@access.setter
|
|
1921
|
+
def access(self, value: Union[None, "ActionWorkflowRequestAccessClass"]) -> None:
|
|
1922
|
+
self._inner_dict['access'] = value
|
|
1923
|
+
|
|
1924
|
+
|
|
1925
|
+
@property
|
|
1926
|
+
def stepState(self) -> "ActionWorkflowRequestStepStateClass":
|
|
1927
|
+
"""State related to steps. This should correspond to a step of type ACTION_REQUEST_REVIEW in the workflow
|
|
1928
|
+
definition."""
|
|
1929
|
+
return self._inner_dict.get('stepState') # type: ignore
|
|
1930
|
+
|
|
1931
|
+
@stepState.setter
|
|
1932
|
+
def stepState(self, value: "ActionWorkflowRequestStepStateClass") -> None:
|
|
1933
|
+
self._inner_dict['stepState'] = value
|
|
1934
|
+
|
|
1935
|
+
|
|
1936
|
+
class ActionWorkflowFormRequestFieldClass(DictWrapper):
|
|
1937
|
+
"""Simply capture the field id + the value."""
|
|
1938
|
+
|
|
1939
|
+
RECORD_SCHEMA = get_schema_type("com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowFormRequestField")
|
|
1940
|
+
def __init__(self,
|
|
1941
|
+
id: str,
|
|
1942
|
+
values: List[Union[str, float]],
|
|
1943
|
+
):
|
|
1944
|
+
super().__init__()
|
|
1945
|
+
|
|
1946
|
+
self.id = id
|
|
1947
|
+
self.values = values
|
|
1948
|
+
|
|
1949
|
+
def _restore_defaults(self) -> None:
|
|
1950
|
+
self.id = str()
|
|
1951
|
+
self.values = list()
|
|
1952
|
+
|
|
1953
|
+
|
|
1954
|
+
@property
|
|
1955
|
+
def id(self) -> str:
|
|
1956
|
+
"""Workflow-local id for the field"""
|
|
1957
|
+
return self._inner_dict.get('id') # type: ignore
|
|
1958
|
+
|
|
1959
|
+
@id.setter
|
|
1960
|
+
def id(self, value: str) -> None:
|
|
1961
|
+
self._inner_dict['id'] = value
|
|
1962
|
+
|
|
1963
|
+
|
|
1964
|
+
@property
|
|
1965
|
+
def values(self) -> List[Union[str, float]]:
|
|
1966
|
+
"""Value, reused model from structured properties. Empty if no response was provided."""
|
|
1967
|
+
return self._inner_dict.get('values') # type: ignore
|
|
1968
|
+
|
|
1969
|
+
@values.setter
|
|
1970
|
+
def values(self, value: List[Union[str, float]]) -> None:
|
|
1971
|
+
self._inner_dict['values'] = value
|
|
1972
|
+
|
|
1973
|
+
|
|
1974
|
+
class ActionWorkflowInfoClass(_Aspect):
|
|
1975
|
+
"""The ActionWorkflowInfo record captures the metadata and configuration of a workflow.
|
|
1976
|
+
TODO: In the future, we may store the serialized camunda / flowable workflow instance ID inside.
|
|
1977
|
+
We'll likely also need to add the "steps" into here since we'll need that to inform state transitions."""
|
|
1978
|
+
|
|
1979
|
+
|
|
1980
|
+
ASPECT_NAME = 'actionWorkflowInfo'
|
|
1981
|
+
ASPECT_INFO = {}
|
|
1982
|
+
RECORD_SCHEMA = get_schema_type("com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowInfo")
|
|
1983
|
+
|
|
1984
|
+
def __init__(self,
|
|
1985
|
+
name: str,
|
|
1986
|
+
category: Union[str, "ActionWorkflowCategoryClass"],
|
|
1987
|
+
trigger: "ActionWorkflowTriggerClass",
|
|
1988
|
+
steps: List["ActionWorkflowStepClass"],
|
|
1989
|
+
created: "AuditStampClass",
|
|
1990
|
+
lastModified: "AuditStampClass",
|
|
1991
|
+
customCategory: Union[None, str]=None,
|
|
1992
|
+
description: Union[None, str]=None,
|
|
1993
|
+
):
|
|
1994
|
+
super().__init__()
|
|
1995
|
+
|
|
1996
|
+
self.name = name
|
|
1997
|
+
self.category = category
|
|
1998
|
+
self.customCategory = customCategory
|
|
1999
|
+
self.description = description
|
|
2000
|
+
self.trigger = trigger
|
|
2001
|
+
self.steps = steps
|
|
2002
|
+
self.created = created
|
|
2003
|
+
self.lastModified = lastModified
|
|
2004
|
+
|
|
2005
|
+
def _restore_defaults(self) -> None:
|
|
2006
|
+
self.name = str()
|
|
2007
|
+
self.category = ActionWorkflowCategoryClass.ACCESS
|
|
2008
|
+
self.customCategory = self.RECORD_SCHEMA.fields_dict["customCategory"].default
|
|
2009
|
+
self.description = self.RECORD_SCHEMA.fields_dict["description"].default
|
|
2010
|
+
self.trigger = ActionWorkflowTriggerClass._construct_with_defaults()
|
|
2011
|
+
self.steps = list()
|
|
2012
|
+
self.created = AuditStampClass._construct_with_defaults()
|
|
2013
|
+
self.lastModified = AuditStampClass._construct_with_defaults()
|
|
2014
|
+
|
|
2015
|
+
|
|
2016
|
+
@property
|
|
2017
|
+
def name(self) -> str:
|
|
2018
|
+
"""Display name of the workflow"""
|
|
2019
|
+
return self._inner_dict.get('name') # type: ignore
|
|
2020
|
+
|
|
2021
|
+
@name.setter
|
|
2022
|
+
def name(self, value: str) -> None:
|
|
2023
|
+
self._inner_dict['name'] = value
|
|
2024
|
+
|
|
2025
|
+
|
|
2026
|
+
@property
|
|
2027
|
+
def category(self) -> Union[str, "ActionWorkflowCategoryClass"]:
|
|
2028
|
+
"""Top-level category of the workflow, e.g. ACCESS"""
|
|
2029
|
+
return self._inner_dict.get('category') # type: ignore
|
|
2030
|
+
|
|
2031
|
+
@category.setter
|
|
2032
|
+
def category(self, value: Union[str, "ActionWorkflowCategoryClass"]) -> None:
|
|
2033
|
+
self._inner_dict['category'] = value
|
|
2034
|
+
|
|
2035
|
+
|
|
2036
|
+
@property
|
|
2037
|
+
def customCategory(self) -> Union[None, str]:
|
|
2038
|
+
"""Custom category for the workflow, if applicable.
|
|
2039
|
+
|
|
2040
|
+
This is used to group workflows that are not part of the standard types.
|
|
2041
|
+
Should be provided when the type is CUSTOM."""
|
|
2042
|
+
return self._inner_dict.get('customCategory') # type: ignore
|
|
2043
|
+
|
|
2044
|
+
@customCategory.setter
|
|
2045
|
+
def customCategory(self, value: Union[None, str]) -> None:
|
|
2046
|
+
self._inner_dict['customCategory'] = value
|
|
2047
|
+
|
|
2048
|
+
|
|
2049
|
+
@property
|
|
2050
|
+
def description(self) -> Union[None, str]:
|
|
2051
|
+
"""Description of the workflow.
|
|
2052
|
+
If this is based on a Form trigger, this will be displayed to users when completing the form. """
|
|
2053
|
+
return self._inner_dict.get('description') # type: ignore
|
|
2054
|
+
|
|
2055
|
+
@description.setter
|
|
2056
|
+
def description(self, value: Union[None, str]) -> None:
|
|
2057
|
+
self._inner_dict['description'] = value
|
|
2058
|
+
|
|
2059
|
+
|
|
2060
|
+
@property
|
|
2061
|
+
def trigger(self) -> "ActionWorkflowTriggerClass":
|
|
2062
|
+
"""The action or event that triggers the workflow. This MUST be stored here, because there is no other
|
|
2063
|
+
place to capture dynamic form state like this. """
|
|
2064
|
+
return self._inner_dict.get('trigger') # type: ignore
|
|
2065
|
+
|
|
2066
|
+
@trigger.setter
|
|
2067
|
+
def trigger(self, value: "ActionWorkflowTriggerClass") -> None:
|
|
2068
|
+
self._inner_dict['trigger'] = value
|
|
2069
|
+
|
|
2070
|
+
|
|
2071
|
+
@property
|
|
2072
|
+
def steps(self) -> List["ActionWorkflowStepClass"]:
|
|
2073
|
+
"""Definition of the steps / tasks / nodes comprising the workflow definition. This is the part we can aim
|
|
2074
|
+
to be able to convert / transform into serialized XML BPMN Format. For now, we model it strongly here.
|
|
2075
|
+
If we can successfully use BPMN for step state, we can deprecate this field in place of the XML serialization.
|
|
2076
|
+
|
|
2077
|
+
This is the part we'll try to build a transpiler to BPMN for execution for. Ultimately, we do need
|
|
2078
|
+
a representation we can easily convert into the frontend framework for display. This represents the set of
|
|
2079
|
+
well known workflow step types - across tasks, conditionals, notifications, etc - that are officially supported today.
|
|
2080
|
+
|
|
2081
|
+
If necessary, we'll extend this to represent conditional branching nodes as a step / node in the Workflow, e.g. Conditional Step, Notification Step, Review Step"""
|
|
2082
|
+
return self._inner_dict.get('steps') # type: ignore
|
|
2083
|
+
|
|
2084
|
+
@steps.setter
|
|
2085
|
+
def steps(self, value: List["ActionWorkflowStepClass"]) -> None:
|
|
2086
|
+
self._inner_dict['steps'] = value
|
|
2087
|
+
|
|
2088
|
+
|
|
2089
|
+
@property
|
|
2090
|
+
def created(self) -> "AuditStampClass":
|
|
2091
|
+
"""Audit stamp capturing the time and actor who created the workflow."""
|
|
2092
|
+
return self._inner_dict.get('created') # type: ignore
|
|
2093
|
+
|
|
2094
|
+
@created.setter
|
|
2095
|
+
def created(self, value: "AuditStampClass") -> None:
|
|
2096
|
+
self._inner_dict['created'] = value
|
|
2097
|
+
|
|
2098
|
+
|
|
2099
|
+
@property
|
|
2100
|
+
def lastModified(self) -> "AuditStampClass":
|
|
2101
|
+
"""Audit stamp capturing the time and actor who last modified the workflow."""
|
|
2102
|
+
return self._inner_dict.get('lastModified') # type: ignore
|
|
2103
|
+
|
|
2104
|
+
@lastModified.setter
|
|
2105
|
+
def lastModified(self, value: "AuditStampClass") -> None:
|
|
2106
|
+
self._inner_dict['lastModified'] = value
|
|
2107
|
+
|
|
2108
|
+
|
|
2109
|
+
class ActionWorkflowRequestAccessClass(DictWrapper):
|
|
2110
|
+
# No docs available.
|
|
2111
|
+
|
|
2112
|
+
RECORD_SCHEMA = get_schema_type("com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowRequestAccess")
|
|
2113
|
+
def __init__(self,
|
|
2114
|
+
expiresAt: Union[None, int]=None,
|
|
2115
|
+
):
|
|
2116
|
+
super().__init__()
|
|
2117
|
+
|
|
2118
|
+
self.expiresAt = expiresAt
|
|
2119
|
+
|
|
2120
|
+
def _restore_defaults(self) -> None:
|
|
2121
|
+
self.expiresAt = self.RECORD_SCHEMA.fields_dict["expiresAt"].default
|
|
2122
|
+
|
|
2123
|
+
|
|
2124
|
+
@property
|
|
2125
|
+
def expiresAt(self) -> Union[None, int]:
|
|
2126
|
+
"""Expiration time for the action request (optional, if part of the template)."""
|
|
2127
|
+
return self._inner_dict.get('expiresAt') # type: ignore
|
|
2128
|
+
|
|
2129
|
+
@expiresAt.setter
|
|
2130
|
+
def expiresAt(self, value: Union[None, int]) -> None:
|
|
2131
|
+
self._inner_dict['expiresAt'] = value
|
|
2132
|
+
|
|
2133
|
+
|
|
2134
|
+
class ActionWorkflowRequestStepStateClass(DictWrapper):
|
|
2135
|
+
# No docs available.
|
|
2136
|
+
|
|
2137
|
+
RECORD_SCHEMA = get_schema_type("com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowRequestStepState")
|
|
2138
|
+
def __init__(self,
|
|
2139
|
+
stepId: str,
|
|
2140
|
+
):
|
|
2141
|
+
super().__init__()
|
|
2142
|
+
|
|
2143
|
+
self.stepId = stepId
|
|
2144
|
+
|
|
2145
|
+
def _restore_defaults(self) -> None:
|
|
2146
|
+
self.stepId = str()
|
|
2147
|
+
|
|
2148
|
+
|
|
2149
|
+
@property
|
|
2150
|
+
def stepId(self) -> str:
|
|
2151
|
+
"""The id of the current step in the workflow, which should be of type ACTION_REQUEST_REVIEW."""
|
|
2152
|
+
return self._inner_dict.get('stepId') # type: ignore
|
|
2153
|
+
|
|
2154
|
+
@stepId.setter
|
|
2155
|
+
def stepId(self, value: str) -> None:
|
|
2156
|
+
self._inner_dict['stepId'] = value
|
|
2157
|
+
|
|
2158
|
+
|
|
2159
|
+
class ActionWorkflowSingleFieldValueConditionClass(DictWrapper):
|
|
2160
|
+
"""A specific type of field condition that checks whether a field should be shown based on the value of a previously completed field."""
|
|
2161
|
+
|
|
2162
|
+
RECORD_SCHEMA = get_schema_type("com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowSingleFieldValueCondition")
|
|
2163
|
+
def __init__(self,
|
|
2164
|
+
field: str,
|
|
2165
|
+
values: Optional[List[str]]=None,
|
|
2166
|
+
condition: Optional[Union[str, "ConditionClass"]]=None,
|
|
2167
|
+
negated: Optional[bool]=None,
|
|
2168
|
+
):
|
|
2169
|
+
super().__init__()
|
|
2170
|
+
|
|
2171
|
+
self.field = field
|
|
2172
|
+
if values is None:
|
|
2173
|
+
# default: []
|
|
2174
|
+
self.values = list()
|
|
2175
|
+
else:
|
|
2176
|
+
self.values = values
|
|
2177
|
+
if condition is None:
|
|
2178
|
+
# default: 'EQUAL'
|
|
2179
|
+
self.condition = self.RECORD_SCHEMA.fields_dict["condition"].default
|
|
2180
|
+
else:
|
|
2181
|
+
self.condition = condition
|
|
2182
|
+
if negated is None:
|
|
2183
|
+
# default: False
|
|
2184
|
+
self.negated = self.RECORD_SCHEMA.fields_dict["negated"].default
|
|
2185
|
+
else:
|
|
2186
|
+
self.negated = negated
|
|
2187
|
+
|
|
2188
|
+
def _restore_defaults(self) -> None:
|
|
2189
|
+
self.field = str()
|
|
2190
|
+
self.values = list()
|
|
2191
|
+
self.condition = self.RECORD_SCHEMA.fields_dict["condition"].default
|
|
2192
|
+
self.negated = self.RECORD_SCHEMA.fields_dict["negated"].default
|
|
2193
|
+
|
|
2194
|
+
|
|
2195
|
+
@property
|
|
2196
|
+
def field(self) -> str:
|
|
2197
|
+
"""The id / name of the field that the criterion refers to"""
|
|
2198
|
+
return self._inner_dict.get('field') # type: ignore
|
|
2199
|
+
|
|
2200
|
+
@field.setter
|
|
2201
|
+
def field(self, value: str) -> None:
|
|
2202
|
+
self._inner_dict['field'] = value
|
|
2203
|
+
|
|
2204
|
+
|
|
2205
|
+
@property
|
|
2206
|
+
def values(self) -> List[str]:
|
|
2207
|
+
"""Values. one of which the intended field should match
|
|
2208
|
+
Note, if values is set, the above "value" field will be ignored"""
|
|
2209
|
+
return self._inner_dict.get('values') # type: ignore
|
|
2210
|
+
|
|
2211
|
+
@values.setter
|
|
2212
|
+
def values(self, value: List[str]) -> None:
|
|
2213
|
+
self._inner_dict['values'] = value
|
|
2214
|
+
|
|
2215
|
+
|
|
2216
|
+
@property
|
|
2217
|
+
def condition(self) -> Union[str, "ConditionClass"]:
|
|
2218
|
+
"""The condition for the criterion, e.g. EQUAL, START_WITH"""
|
|
2219
|
+
return self._inner_dict.get('condition') # type: ignore
|
|
2220
|
+
|
|
2221
|
+
@condition.setter
|
|
2222
|
+
def condition(self, value: Union[str, "ConditionClass"]) -> None:
|
|
2223
|
+
self._inner_dict['condition'] = value
|
|
2224
|
+
|
|
2225
|
+
|
|
2226
|
+
@property
|
|
2227
|
+
def negated(self) -> bool:
|
|
2228
|
+
"""Whether the condition should be negated"""
|
|
2229
|
+
return self._inner_dict.get('negated') # type: ignore
|
|
2230
|
+
|
|
2231
|
+
@negated.setter
|
|
2232
|
+
def negated(self, value: bool) -> None:
|
|
2233
|
+
self._inner_dict['negated'] = value
|
|
2234
|
+
|
|
2235
|
+
|
|
2236
|
+
class ActionWorkflowStepClass(DictWrapper):
|
|
2237
|
+
"""Defines a single review step in a workflow.
|
|
2238
|
+
|
|
2239
|
+
Today, steps are simple. They execute in sequence after the trigger event.
|
|
2240
|
+
|
|
2241
|
+
In the future, we may extend steps to include "depends on steps" to form a DAG structure across
|
|
2242
|
+
steps. For now, steps execute in linear sequence after the trigger event -- however the expectation
|
|
2243
|
+
is that they COULD run in parallel after the trigger event without a problem in the future.
|
|
2244
|
+
|
|
2245
|
+
If necessary, we'll extend this to represent conditional branching nodes as a step / node in the Workflow, e.g. Conditional Step, Notification Step, Review Step
|
|
2246
|
+
|
|
2247
|
+
Today, step state is reflected via a single entity representing the workflow instance: the ActionRequest entity.
|
|
2248
|
+
In the future we'll explore modeling individual step states separately if required."""
|
|
2249
|
+
|
|
2250
|
+
RECORD_SCHEMA = get_schema_type("com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowStep")
|
|
2251
|
+
def __init__(self,
|
|
2252
|
+
id: str,
|
|
2253
|
+
type: Union[str, "ActionWorkflowStepTypeClass"],
|
|
2254
|
+
description: Union[None, str]=None,
|
|
2255
|
+
actors: Union[None, "ActionWorkflowStepActorsClass"]=None,
|
|
2256
|
+
):
|
|
2257
|
+
super().__init__()
|
|
2258
|
+
|
|
2259
|
+
self.id = id
|
|
2260
|
+
self.type = type
|
|
2261
|
+
self.description = description
|
|
2262
|
+
self.actors = actors
|
|
2263
|
+
|
|
2264
|
+
def _restore_defaults(self) -> None:
|
|
2265
|
+
self.id = str()
|
|
2266
|
+
self.type = ActionWorkflowStepTypeClass.APPROVAL
|
|
2267
|
+
self.description = self.RECORD_SCHEMA.fields_dict["description"].default
|
|
2268
|
+
self.actors = self.RECORD_SCHEMA.fields_dict["actors"].default
|
|
2269
|
+
|
|
2270
|
+
|
|
2271
|
+
@property
|
|
2272
|
+
def id(self) -> str:
|
|
2273
|
+
"""A unique identifier for this step within the workflow.
|
|
2274
|
+
This ID must be unique within the workflow and is used to match values during workflow execution."""
|
|
2275
|
+
return self._inner_dict.get('id') # type: ignore
|
|
2276
|
+
|
|
2277
|
+
@id.setter
|
|
2278
|
+
def id(self, value: str) -> None:
|
|
2279
|
+
self._inner_dict['id'] = value
|
|
2280
|
+
|
|
2281
|
+
|
|
2282
|
+
@property
|
|
2283
|
+
def type(self) -> Union[str, "ActionWorkflowStepTypeClass"]:
|
|
2284
|
+
"""A type of step / task / node in the Action Workflow. """
|
|
2285
|
+
return self._inner_dict.get('type') # type: ignore
|
|
2286
|
+
|
|
2287
|
+
@type.setter
|
|
2288
|
+
def type(self, value: Union[str, "ActionWorkflowStepTypeClass"]) -> None:
|
|
2289
|
+
self._inner_dict['type'] = value
|
|
2290
|
+
|
|
2291
|
+
|
|
2292
|
+
@property
|
|
2293
|
+
def description(self) -> Union[None, str]:
|
|
2294
|
+
"""Optional description shown alongside the step to explain its purpose."""
|
|
2295
|
+
return self._inner_dict.get('description') # type: ignore
|
|
2296
|
+
|
|
2297
|
+
@description.setter
|
|
2298
|
+
def description(self, value: Union[None, str]) -> None:
|
|
2299
|
+
self._inner_dict['description'] = value
|
|
2300
|
+
|
|
2301
|
+
|
|
2302
|
+
@property
|
|
2303
|
+
def actors(self) -> Union[None, "ActionWorkflowStepActorsClass"]:
|
|
2304
|
+
"""A definition of the actors required to execute the step, if there are any.
|
|
2305
|
+
|
|
2306
|
+
For steps of type REQUEST_REVIEW, this field MUST be provided! """
|
|
2307
|
+
return self._inner_dict.get('actors') # type: ignore
|
|
2308
|
+
|
|
2309
|
+
@actors.setter
|
|
2310
|
+
def actors(self, value: Union[None, "ActionWorkflowStepActorsClass"]) -> None:
|
|
2311
|
+
self._inner_dict['actors'] = value
|
|
2312
|
+
|
|
2313
|
+
|
|
2314
|
+
class ActionWorkflowStepActorsClass(DictWrapper):
|
|
2315
|
+
"""A definition of the actors required to review."""
|
|
2316
|
+
|
|
2317
|
+
RECORD_SCHEMA = get_schema_type("com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowStepActors")
|
|
2318
|
+
def __init__(self,
|
|
2319
|
+
users: List[str],
|
|
2320
|
+
groups: List[str],
|
|
2321
|
+
roles: List[str],
|
|
2322
|
+
dynamicAssignment: Union[None, "ActionWorkflowStepDynamicAssignmentClass"]=None,
|
|
2323
|
+
):
|
|
2324
|
+
super().__init__()
|
|
2325
|
+
|
|
2326
|
+
self.users = users
|
|
2327
|
+
self.groups = groups
|
|
2328
|
+
self.roles = roles
|
|
2329
|
+
self.dynamicAssignment = dynamicAssignment
|
|
2330
|
+
|
|
2331
|
+
def _restore_defaults(self) -> None:
|
|
2332
|
+
self.users = list()
|
|
2333
|
+
self.groups = list()
|
|
2334
|
+
self.roles = list()
|
|
2335
|
+
self.dynamicAssignment = self.RECORD_SCHEMA.fields_dict["dynamicAssignment"].default
|
|
2336
|
+
|
|
2337
|
+
|
|
2338
|
+
@property
|
|
2339
|
+
def users(self) -> List[str]:
|
|
2340
|
+
"""Users statically assigned to perform the review step."""
|
|
2341
|
+
return self._inner_dict.get('users') # type: ignore
|
|
2342
|
+
|
|
2343
|
+
@users.setter
|
|
2344
|
+
def users(self, value: List[str]) -> None:
|
|
2345
|
+
self._inner_dict['users'] = value
|
|
2346
|
+
|
|
2347
|
+
|
|
2348
|
+
@property
|
|
2349
|
+
def groups(self) -> List[str]:
|
|
2350
|
+
"""Groups statically assigned to perform the review step."""
|
|
2351
|
+
return self._inner_dict.get('groups') # type: ignore
|
|
2352
|
+
|
|
2353
|
+
@groups.setter
|
|
2354
|
+
def groups(self, value: List[str]) -> None:
|
|
2355
|
+
self._inner_dict['groups'] = value
|
|
2356
|
+
|
|
2357
|
+
|
|
2358
|
+
@property
|
|
2359
|
+
def roles(self) -> List[str]:
|
|
2360
|
+
"""Roles statically assigned to perform the review step."""
|
|
2361
|
+
return self._inner_dict.get('roles') # type: ignore
|
|
2362
|
+
|
|
2363
|
+
@roles.setter
|
|
2364
|
+
def roles(self, value: List[str]) -> None:
|
|
2365
|
+
self._inner_dict['roles'] = value
|
|
2366
|
+
|
|
2367
|
+
|
|
2368
|
+
@property
|
|
2369
|
+
def dynamicAssignment(self) -> Union[None, "ActionWorkflowStepDynamicAssignmentClass"]:
|
|
2370
|
+
"""Dynamic assignment type for the review step."""
|
|
2371
|
+
return self._inner_dict.get('dynamicAssignment') # type: ignore
|
|
2372
|
+
|
|
2373
|
+
@dynamicAssignment.setter
|
|
2374
|
+
def dynamicAssignment(self, value: Union[None, "ActionWorkflowStepDynamicAssignmentClass"]) -> None:
|
|
2375
|
+
self._inner_dict['dynamicAssignment'] = value
|
|
2376
|
+
|
|
2377
|
+
|
|
2378
|
+
class ActionWorkflowStepDynamicAssignmentClass(DictWrapper):
|
|
2379
|
+
# No docs available.
|
|
2380
|
+
|
|
2381
|
+
RECORD_SCHEMA = get_schema_type("com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowStepDynamicAssignment")
|
|
2382
|
+
def __init__(self,
|
|
2383
|
+
type: Union[str, "ActionWorkflowStepDynamicAssignmentTypeClass"],
|
|
2384
|
+
ownershipTypeUrns: Union[None, List[str]]=None,
|
|
2385
|
+
):
|
|
2386
|
+
super().__init__()
|
|
2387
|
+
|
|
2388
|
+
self.type = type
|
|
2389
|
+
self.ownershipTypeUrns = ownershipTypeUrns
|
|
2390
|
+
|
|
2391
|
+
def _restore_defaults(self) -> None:
|
|
2392
|
+
self.type = ActionWorkflowStepDynamicAssignmentTypeClass.ENTITY_OWNERS
|
|
2393
|
+
self.ownershipTypeUrns = self.RECORD_SCHEMA.fields_dict["ownershipTypeUrns"].default
|
|
2394
|
+
|
|
2395
|
+
|
|
2396
|
+
@property
|
|
2397
|
+
def type(self) -> Union[str, "ActionWorkflowStepDynamicAssignmentTypeClass"]:
|
|
2398
|
+
"""A standardized policy for resolving actors dynamically for an access request."""
|
|
2399
|
+
return self._inner_dict.get('type') # type: ignore
|
|
2400
|
+
|
|
2401
|
+
@type.setter
|
|
2402
|
+
def type(self, value: Union[str, "ActionWorkflowStepDynamicAssignmentTypeClass"]) -> None:
|
|
2403
|
+
self._inner_dict['type'] = value
|
|
2404
|
+
|
|
2405
|
+
|
|
2406
|
+
@property
|
|
2407
|
+
def ownershipTypeUrns(self) -> Union[None, List[str]]:
|
|
2408
|
+
"""Optional: A well defined set of ownership type urns to including in routing."""
|
|
2409
|
+
return self._inner_dict.get('ownershipTypeUrns') # type: ignore
|
|
2410
|
+
|
|
2411
|
+
@ownershipTypeUrns.setter
|
|
2412
|
+
def ownershipTypeUrns(self, value: Union[None, List[str]]) -> None:
|
|
2413
|
+
self._inner_dict['ownershipTypeUrns'] = value
|
|
2414
|
+
|
|
2415
|
+
|
|
2416
|
+
class ActionWorkflowStepDynamicAssignmentTypeClass(object):
|
|
2417
|
+
# No docs available.
|
|
2418
|
+
|
|
2419
|
+
ENTITY_OWNERS = "ENTITY_OWNERS"
|
|
2420
|
+
"""Assign the entity owners."""
|
|
2421
|
+
|
|
2422
|
+
ENTITY_DOMAIN_OWNERS = "ENTITY_DOMAIN_OWNERS"
|
|
2423
|
+
"""Assign the entity domain owners."""
|
|
2424
|
+
|
|
2425
|
+
ENTITY_DATA_PRODUCT_OWNERS = "ENTITY_DATA_PRODUCT_OWNERS"
|
|
2426
|
+
"""Assign the entity data product owners."""
|
|
2427
|
+
|
|
2428
|
+
|
|
2429
|
+
|
|
2430
|
+
class ActionWorkflowStepTypeClass(object):
|
|
2431
|
+
# No docs available.
|
|
2432
|
+
|
|
2433
|
+
APPROVAL = "APPROVAL"
|
|
2434
|
+
"""The only step type currently supported - a human review step.
|
|
2435
|
+
This step type requires that an assigned user reviews an action request associated with this workflow.
|
|
2436
|
+
reviews the request, approving or denying it (currently the actions supported, may extend later). """
|
|
2437
|
+
|
|
2438
|
+
|
|
2439
|
+
|
|
2440
|
+
class ActionWorkflowTriggerClass(DictWrapper):
|
|
2441
|
+
"""Defines the conditions on which the action workflow is triggered.
|
|
2442
|
+
|
|
2443
|
+
Currently we have only one trigger type, but we expect this to extend e.g. in the case that change events, proposals,
|
|
2444
|
+
or other actions can trigger workflows.
|
|
2445
|
+
|
|
2446
|
+
Currently, the workflow must have exactly 1 trigger condition. We don't expect this to change. """
|
|
2447
|
+
|
|
2448
|
+
RECORD_SCHEMA = get_schema_type("com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowTrigger")
|
|
2449
|
+
def __init__(self,
|
|
2450
|
+
type: Union[str, "ActionWorkflowTriggerTypeClass"],
|
|
2451
|
+
form: Union[None, "ActionWorkflowFormClass"]=None,
|
|
2452
|
+
):
|
|
2453
|
+
super().__init__()
|
|
2454
|
+
|
|
2455
|
+
self.type = type
|
|
2456
|
+
self.form = form
|
|
2457
|
+
|
|
2458
|
+
def _restore_defaults(self) -> None:
|
|
2459
|
+
self.type = ActionWorkflowTriggerTypeClass.FORM_SUBMITTED
|
|
2460
|
+
self.form = self.RECORD_SCHEMA.fields_dict["form"].default
|
|
2461
|
+
|
|
2462
|
+
|
|
2463
|
+
@property
|
|
2464
|
+
def type(self) -> Union[str, "ActionWorkflowTriggerTypeClass"]:
|
|
2465
|
+
"""A type of step / task / node in the Action Workflow. """
|
|
2466
|
+
return self._inner_dict.get('type') # type: ignore
|
|
2467
|
+
|
|
2468
|
+
@type.setter
|
|
2469
|
+
def type(self, value: Union[str, "ActionWorkflowTriggerTypeClass"]) -> None:
|
|
2470
|
+
self._inner_dict['type'] = value
|
|
2471
|
+
|
|
2472
|
+
|
|
2473
|
+
@property
|
|
2474
|
+
def form(self) -> Union[None, "ActionWorkflowFormClass"]:
|
|
2475
|
+
"""The form definition that will trigger the action workflow when submitted. """
|
|
2476
|
+
return self._inner_dict.get('form') # type: ignore
|
|
2477
|
+
|
|
2478
|
+
@form.setter
|
|
2479
|
+
def form(self, value: Union[None, "ActionWorkflowFormClass"]) -> None:
|
|
2480
|
+
self._inner_dict['form'] = value
|
|
2481
|
+
|
|
2482
|
+
|
|
2483
|
+
class ActionWorkflowTriggerTypeClass(object):
|
|
2484
|
+
# No docs available.
|
|
2485
|
+
|
|
2486
|
+
FORM_SUBMITTED = "FORM_SUBMITTED"
|
|
2487
|
+
"""The only trigger type currently supported - a workflow request form is submitted successfully.
|
|
2488
|
+
This enables admins to create forms and display them on various entrypoints.
|
|
2489
|
+
The form is also captured in the field "form" below. """
|
|
2490
|
+
|
|
2491
|
+
|
|
2492
|
+
|
|
1501
2493
|
class AiInferenceMetadataClass(_Aspect):
|
|
1502
2494
|
"""AI Inference Metadata of various types."""
|
|
1503
2495
|
|
|
@@ -17581,6 +18573,12 @@ class NotificationTemplateTypeClass(object):
|
|
|
17581
18573
|
|
|
17582
18574
|
BROADCAST_COMPLIANCE_FORM_PUBLISH = "BROADCAST_COMPLIANCE_FORM_PUBLISH"
|
|
17583
18575
|
|
|
18576
|
+
BROADCAST_NEW_ACTION_WORKFLOW_FORM_REQUEST = "BROADCAST_NEW_ACTION_WORKFLOW_FORM_REQUEST"
|
|
18577
|
+
"""Broadcast that a new action workflow form request has been created or needs review."""
|
|
18578
|
+
|
|
18579
|
+
BROADCAST_ACTION_WORKFLOW_FORM_REQUEST_STATUS_CHANGE = "BROADCAST_ACTION_WORKFLOW_FORM_REQUEST_STATUS_CHANGE"
|
|
18580
|
+
"""Broadcast that an action workflow form request has been completed (approved or denied)."""
|
|
18581
|
+
|
|
17584
18582
|
INVALID_TEMPLATE = "INVALID_TEMPLATE"
|
|
17585
18583
|
|
|
17586
18584
|
|
|
@@ -22019,6 +23017,35 @@ class ActionRequestKeyClass(_Aspect):
|
|
|
22019
23017
|
self._inner_dict['id'] = value
|
|
22020
23018
|
|
|
22021
23019
|
|
|
23020
|
+
class ActionWorkflowKeyClass(_Aspect):
|
|
23021
|
+
"""Key for an ActionRequestWorkflow"""
|
|
23022
|
+
|
|
23023
|
+
|
|
23024
|
+
ASPECT_NAME = 'actionWorkflowKey'
|
|
23025
|
+
ASPECT_INFO = {'keyForEntity': 'actionWorkflow', 'entityCategory': 'internal', 'entityAspects': ['actionWorkflowInfo']}
|
|
23026
|
+
RECORD_SCHEMA = get_schema_type("com.linkedin.pegasus2avro.metadata.key.ActionWorkflowKey")
|
|
23027
|
+
|
|
23028
|
+
def __init__(self,
|
|
23029
|
+
id: str,
|
|
23030
|
+
):
|
|
23031
|
+
super().__init__()
|
|
23032
|
+
|
|
23033
|
+
self.id = id
|
|
23034
|
+
|
|
23035
|
+
def _restore_defaults(self) -> None:
|
|
23036
|
+
self.id = str()
|
|
23037
|
+
|
|
23038
|
+
|
|
23039
|
+
@property
|
|
23040
|
+
def id(self) -> str:
|
|
23041
|
+
""" The unique identifier for the workflow """
|
|
23042
|
+
return self._inner_dict.get('id') # type: ignore
|
|
23043
|
+
|
|
23044
|
+
@id.setter
|
|
23045
|
+
def id(self, value: str) -> None:
|
|
23046
|
+
self._inner_dict['id'] = value
|
|
23047
|
+
|
|
23048
|
+
|
|
22022
23049
|
class AnomalyKeyClass(_Aspect):
|
|
22023
23050
|
"""Key for an asset Anomaly"""
|
|
22024
23051
|
|
|
@@ -38276,6 +39303,26 @@ __SCHEMA_TYPES = {
|
|
|
38276
39303
|
'com.linkedin.pegasus2avro.actionrequest.OwnerProposal': OwnerProposalClass,
|
|
38277
39304
|
'com.linkedin.pegasus2avro.actionrequest.StructuredPropertyProposal': StructuredPropertyProposalClass,
|
|
38278
39305
|
'com.linkedin.pegasus2avro.actionrequest.TagProposal': TagProposalClass,
|
|
39306
|
+
'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowCategory': ActionWorkflowCategoryClass,
|
|
39307
|
+
'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowEntrypoint': ActionWorkflowEntrypointClass,
|
|
39308
|
+
'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowEntrypointType': ActionWorkflowEntrypointTypeClass,
|
|
39309
|
+
'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowField': ActionWorkflowFieldClass,
|
|
39310
|
+
'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowFieldCondition': ActionWorkflowFieldConditionClass,
|
|
39311
|
+
'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowFieldConditionType': ActionWorkflowFieldConditionTypeClass,
|
|
39312
|
+
'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowForm': ActionWorkflowFormClass,
|
|
39313
|
+
'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowFormRequest': ActionWorkflowFormRequestClass,
|
|
39314
|
+
'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowFormRequestField': ActionWorkflowFormRequestFieldClass,
|
|
39315
|
+
'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowInfo': ActionWorkflowInfoClass,
|
|
39316
|
+
'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowRequestAccess': ActionWorkflowRequestAccessClass,
|
|
39317
|
+
'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowRequestStepState': ActionWorkflowRequestStepStateClass,
|
|
39318
|
+
'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowSingleFieldValueCondition': ActionWorkflowSingleFieldValueConditionClass,
|
|
39319
|
+
'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowStep': ActionWorkflowStepClass,
|
|
39320
|
+
'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowStepActors': ActionWorkflowStepActorsClass,
|
|
39321
|
+
'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowStepDynamicAssignment': ActionWorkflowStepDynamicAssignmentClass,
|
|
39322
|
+
'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowStepDynamicAssignmentType': ActionWorkflowStepDynamicAssignmentTypeClass,
|
|
39323
|
+
'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowStepType': ActionWorkflowStepTypeClass,
|
|
39324
|
+
'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowTrigger': ActionWorkflowTriggerClass,
|
|
39325
|
+
'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowTriggerType': ActionWorkflowTriggerTypeClass,
|
|
38279
39326
|
'com.linkedin.pegasus2avro.ai.AiInferenceMetadata': AiInferenceMetadataClass,
|
|
38280
39327
|
'com.linkedin.pegasus2avro.ai.EntityInferenceMetadata': EntityInferenceMetadataClass,
|
|
38281
39328
|
'com.linkedin.pegasus2avro.ai.GlossaryTermsInferenceMetadata': GlossaryTermsInferenceMetadataClass,
|
|
@@ -38635,6 +39682,7 @@ __SCHEMA_TYPES = {
|
|
|
38635
39682
|
'com.linkedin.pegasus2avro.link.LinkPreviewInfo': LinkPreviewInfoClass,
|
|
38636
39683
|
'com.linkedin.pegasus2avro.link.LinkPreviewType': LinkPreviewTypeClass,
|
|
38637
39684
|
'com.linkedin.pegasus2avro.metadata.key.ActionRequestKey': ActionRequestKeyClass,
|
|
39685
|
+
'com.linkedin.pegasus2avro.metadata.key.ActionWorkflowKey': ActionWorkflowKeyClass,
|
|
38638
39686
|
'com.linkedin.pegasus2avro.metadata.key.AnomalyKey': AnomalyKeyClass,
|
|
38639
39687
|
'com.linkedin.pegasus2avro.metadata.key.AssertionKey': AssertionKeyClass,
|
|
38640
39688
|
'com.linkedin.pegasus2avro.metadata.key.ChartKey': ChartKeyClass,
|
|
@@ -39011,6 +40059,26 @@ __SCHEMA_TYPES = {
|
|
|
39011
40059
|
'OwnerProposal': OwnerProposalClass,
|
|
39012
40060
|
'StructuredPropertyProposal': StructuredPropertyProposalClass,
|
|
39013
40061
|
'TagProposal': TagProposalClass,
|
|
40062
|
+
'ActionWorkflowCategory': ActionWorkflowCategoryClass,
|
|
40063
|
+
'ActionWorkflowEntrypoint': ActionWorkflowEntrypointClass,
|
|
40064
|
+
'ActionWorkflowEntrypointType': ActionWorkflowEntrypointTypeClass,
|
|
40065
|
+
'ActionWorkflowField': ActionWorkflowFieldClass,
|
|
40066
|
+
'ActionWorkflowFieldCondition': ActionWorkflowFieldConditionClass,
|
|
40067
|
+
'ActionWorkflowFieldConditionType': ActionWorkflowFieldConditionTypeClass,
|
|
40068
|
+
'ActionWorkflowForm': ActionWorkflowFormClass,
|
|
40069
|
+
'ActionWorkflowFormRequest': ActionWorkflowFormRequestClass,
|
|
40070
|
+
'ActionWorkflowFormRequestField': ActionWorkflowFormRequestFieldClass,
|
|
40071
|
+
'ActionWorkflowInfo': ActionWorkflowInfoClass,
|
|
40072
|
+
'ActionWorkflowRequestAccess': ActionWorkflowRequestAccessClass,
|
|
40073
|
+
'ActionWorkflowRequestStepState': ActionWorkflowRequestStepStateClass,
|
|
40074
|
+
'ActionWorkflowSingleFieldValueCondition': ActionWorkflowSingleFieldValueConditionClass,
|
|
40075
|
+
'ActionWorkflowStep': ActionWorkflowStepClass,
|
|
40076
|
+
'ActionWorkflowStepActors': ActionWorkflowStepActorsClass,
|
|
40077
|
+
'ActionWorkflowStepDynamicAssignment': ActionWorkflowStepDynamicAssignmentClass,
|
|
40078
|
+
'ActionWorkflowStepDynamicAssignmentType': ActionWorkflowStepDynamicAssignmentTypeClass,
|
|
40079
|
+
'ActionWorkflowStepType': ActionWorkflowStepTypeClass,
|
|
40080
|
+
'ActionWorkflowTrigger': ActionWorkflowTriggerClass,
|
|
40081
|
+
'ActionWorkflowTriggerType': ActionWorkflowTriggerTypeClass,
|
|
39014
40082
|
'AiInferenceMetadata': AiInferenceMetadataClass,
|
|
39015
40083
|
'EntityInferenceMetadata': EntityInferenceMetadataClass,
|
|
39016
40084
|
'GlossaryTermsInferenceMetadata': GlossaryTermsInferenceMetadataClass,
|
|
@@ -39370,6 +40438,7 @@ __SCHEMA_TYPES = {
|
|
|
39370
40438
|
'LinkPreviewInfo': LinkPreviewInfoClass,
|
|
39371
40439
|
'LinkPreviewType': LinkPreviewTypeClass,
|
|
39372
40440
|
'ActionRequestKey': ActionRequestKeyClass,
|
|
40441
|
+
'ActionWorkflowKey': ActionWorkflowKeyClass,
|
|
39373
40442
|
'AnomalyKey': AnomalyKeyClass,
|
|
39374
40443
|
'AssertionKey': AssertionKeyClass,
|
|
39375
40444
|
'ChartKey': ChartKeyClass,
|
|
@@ -39801,6 +40870,7 @@ ASPECT_CLASSES: List[Type[_Aspect]] = [
|
|
|
39801
40870
|
CorpGroupKeyClass,
|
|
39802
40871
|
VersionSetKeyClass,
|
|
39803
40872
|
AnomalyKeyClass,
|
|
40873
|
+
ActionWorkflowKeyClass,
|
|
39804
40874
|
ChartKeyClass,
|
|
39805
40875
|
DataHubPageTemplateKeyClass,
|
|
39806
40876
|
OwnershipTypeKeyClass,
|
|
@@ -39958,6 +41028,7 @@ ASPECT_CLASSES: List[Type[_Aspect]] = [
|
|
|
39958
41028
|
DataContractPropertiesClass,
|
|
39959
41029
|
DataContractStatusClass,
|
|
39960
41030
|
MonitorAnomalyEventClass,
|
|
41031
|
+
ActionWorkflowInfoClass,
|
|
39961
41032
|
DataHubIngestionSourceInfoClass,
|
|
39962
41033
|
GlossaryTermInfoClass,
|
|
39963
41034
|
GlossaryNodeInfoClass,
|
|
@@ -40092,6 +41163,7 @@ class AspectBag(TypedDict, total=False):
|
|
|
40092
41163
|
corpGroupKey: CorpGroupKeyClass
|
|
40093
41164
|
versionSetKey: VersionSetKeyClass
|
|
40094
41165
|
anomalyKey: AnomalyKeyClass
|
|
41166
|
+
actionWorkflowKey: ActionWorkflowKeyClass
|
|
40095
41167
|
chartKey: ChartKeyClass
|
|
40096
41168
|
dataHubPageTemplateKey: DataHubPageTemplateKeyClass
|
|
40097
41169
|
ownershipTypeKey: OwnershipTypeKeyClass
|
|
@@ -40249,6 +41321,7 @@ class AspectBag(TypedDict, total=False):
|
|
|
40249
41321
|
dataContractProperties: DataContractPropertiesClass
|
|
40250
41322
|
dataContractStatus: DataContractStatusClass
|
|
40251
41323
|
monitorAnomalyEvent: MonitorAnomalyEventClass
|
|
41324
|
+
actionWorkflowInfo: ActionWorkflowInfoClass
|
|
40252
41325
|
dataHubIngestionSourceInfo: DataHubIngestionSourceInfoClass
|
|
40253
41326
|
glossaryTermInfo: GlossaryTermInfoClass
|
|
40254
41327
|
glossaryNodeInfo: GlossaryNodeInfoClass
|
|
@@ -40335,6 +41408,7 @@ KEY_ASPECTS: Dict[str, Type[_Aspect]] = {
|
|
|
40335
41408
|
'mlPrimaryKey': MLPrimaryKeyKeyClass,
|
|
40336
41409
|
'corpGroup': CorpGroupKeyClass,
|
|
40337
41410
|
'versionSet': VersionSetKeyClass,
|
|
41411
|
+
'actionWorkflow': ActionWorkflowKeyClass,
|
|
40338
41412
|
'chart': ChartKeyClass,
|
|
40339
41413
|
'dataHubPageTemplate': DataHubPageTemplateKeyClass,
|
|
40340
41414
|
'ownershipType': OwnershipTypeKeyClass,
|
|
@@ -40412,6 +41486,7 @@ ENTITY_TYPE_NAMES: List[str] = [
|
|
|
40412
41486
|
'mlPrimaryKey',
|
|
40413
41487
|
'corpGroup',
|
|
40414
41488
|
'versionSet',
|
|
41489
|
+
'actionWorkflow',
|
|
40415
41490
|
'chart',
|
|
40416
41491
|
'dataHubPageTemplate',
|
|
40417
41492
|
'ownershipType',
|
|
@@ -40486,6 +41561,7 @@ EntityTypeName = Literal[
|
|
|
40486
41561
|
'mlPrimaryKey',
|
|
40487
41562
|
'corpGroup',
|
|
40488
41563
|
'versionSet',
|
|
41564
|
+
'actionWorkflow',
|
|
40489
41565
|
'chart',
|
|
40490
41566
|
'dataHubPageTemplate',
|
|
40491
41567
|
'ownershipType',
|