acryl-datahub-cloud 0.3.13rc3__py3-none-any.whl → 0.3.13rc5__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.13rc3.dist-info → acryl_datahub_cloud-0.3.13rc5.dist-info}/METADATA +38 -38
- {acryl_datahub_cloud-0.3.13rc3.dist-info → acryl_datahub_cloud-0.3.13rc5.dist-info}/RECORD +16 -13
- {acryl_datahub_cloud-0.3.13rc3.dist-info → acryl_datahub_cloud-0.3.13rc5.dist-info}/WHEEL +0 -0
- {acryl_datahub_cloud-0.3.13rc3.dist-info → acryl_datahub_cloud-0.3.13rc5.dist-info}/entry_points.txt +0 -0
- {acryl_datahub_cloud-0.3.13rc3.dist-info → acryl_datahub_cloud-0.3.13rc5.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
|
|
|
@@ -17646,6 +18638,12 @@ class NotificationTemplateTypeClass(object):
|
|
|
17646
18638
|
|
|
17647
18639
|
BROADCAST_COMPLIANCE_FORM_PUBLISH = "BROADCAST_COMPLIANCE_FORM_PUBLISH"
|
|
17648
18640
|
|
|
18641
|
+
BROADCAST_NEW_ACTION_WORKFLOW_FORM_REQUEST = "BROADCAST_NEW_ACTION_WORKFLOW_FORM_REQUEST"
|
|
18642
|
+
"""Broadcast that a new action workflow form request has been created or needs review."""
|
|
18643
|
+
|
|
18644
|
+
BROADCAST_ACTION_WORKFLOW_FORM_REQUEST_STATUS_CHANGE = "BROADCAST_ACTION_WORKFLOW_FORM_REQUEST_STATUS_CHANGE"
|
|
18645
|
+
"""Broadcast that an action workflow form request has been completed (approved or denied)."""
|
|
18646
|
+
|
|
17649
18647
|
INVALID_TEMPLATE = "INVALID_TEMPLATE"
|
|
17650
18648
|
|
|
17651
18649
|
|
|
@@ -22113,6 +23111,35 @@ class ActionRequestKeyClass(_Aspect):
|
|
|
22113
23111
|
self._inner_dict['id'] = value
|
|
22114
23112
|
|
|
22115
23113
|
|
|
23114
|
+
class ActionWorkflowKeyClass(_Aspect):
|
|
23115
|
+
"""Key for an ActionRequestWorkflow"""
|
|
23116
|
+
|
|
23117
|
+
|
|
23118
|
+
ASPECT_NAME = 'actionWorkflowKey'
|
|
23119
|
+
ASPECT_INFO = {'keyForEntity': 'actionWorkflow', 'entityCategory': 'internal', 'entityAspects': ['actionWorkflowInfo']}
|
|
23120
|
+
RECORD_SCHEMA = get_schema_type("com.linkedin.pegasus2avro.metadata.key.ActionWorkflowKey")
|
|
23121
|
+
|
|
23122
|
+
def __init__(self,
|
|
23123
|
+
id: str,
|
|
23124
|
+
):
|
|
23125
|
+
super().__init__()
|
|
23126
|
+
|
|
23127
|
+
self.id = id
|
|
23128
|
+
|
|
23129
|
+
def _restore_defaults(self) -> None:
|
|
23130
|
+
self.id = str()
|
|
23131
|
+
|
|
23132
|
+
|
|
23133
|
+
@property
|
|
23134
|
+
def id(self) -> str:
|
|
23135
|
+
""" The unique identifier for the workflow """
|
|
23136
|
+
return self._inner_dict.get('id') # type: ignore
|
|
23137
|
+
|
|
23138
|
+
@id.setter
|
|
23139
|
+
def id(self, value: str) -> None:
|
|
23140
|
+
self._inner_dict['id'] = value
|
|
23141
|
+
|
|
23142
|
+
|
|
22116
23143
|
class AnomalyKeyClass(_Aspect):
|
|
22117
23144
|
"""Key for an asset Anomaly"""
|
|
22118
23145
|
|
|
@@ -38545,6 +39572,26 @@ __SCHEMA_TYPES = {
|
|
|
38545
39572
|
'com.linkedin.pegasus2avro.actionrequest.OwnerProposal': OwnerProposalClass,
|
|
38546
39573
|
'com.linkedin.pegasus2avro.actionrequest.StructuredPropertyProposal': StructuredPropertyProposalClass,
|
|
38547
39574
|
'com.linkedin.pegasus2avro.actionrequest.TagProposal': TagProposalClass,
|
|
39575
|
+
'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowCategory': ActionWorkflowCategoryClass,
|
|
39576
|
+
'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowEntrypoint': ActionWorkflowEntrypointClass,
|
|
39577
|
+
'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowEntrypointType': ActionWorkflowEntrypointTypeClass,
|
|
39578
|
+
'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowField': ActionWorkflowFieldClass,
|
|
39579
|
+
'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowFieldCondition': ActionWorkflowFieldConditionClass,
|
|
39580
|
+
'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowFieldConditionType': ActionWorkflowFieldConditionTypeClass,
|
|
39581
|
+
'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowForm': ActionWorkflowFormClass,
|
|
39582
|
+
'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowFormRequest': ActionWorkflowFormRequestClass,
|
|
39583
|
+
'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowFormRequestField': ActionWorkflowFormRequestFieldClass,
|
|
39584
|
+
'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowInfo': ActionWorkflowInfoClass,
|
|
39585
|
+
'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowRequestAccess': ActionWorkflowRequestAccessClass,
|
|
39586
|
+
'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowRequestStepState': ActionWorkflowRequestStepStateClass,
|
|
39587
|
+
'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowSingleFieldValueCondition': ActionWorkflowSingleFieldValueConditionClass,
|
|
39588
|
+
'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowStep': ActionWorkflowStepClass,
|
|
39589
|
+
'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowStepActors': ActionWorkflowStepActorsClass,
|
|
39590
|
+
'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowStepDynamicAssignment': ActionWorkflowStepDynamicAssignmentClass,
|
|
39591
|
+
'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowStepDynamicAssignmentType': ActionWorkflowStepDynamicAssignmentTypeClass,
|
|
39592
|
+
'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowStepType': ActionWorkflowStepTypeClass,
|
|
39593
|
+
'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowTrigger': ActionWorkflowTriggerClass,
|
|
39594
|
+
'com.linkedin.pegasus2avro.actionworkflow.ActionWorkflowTriggerType': ActionWorkflowTriggerTypeClass,
|
|
38548
39595
|
'com.linkedin.pegasus2avro.ai.AiInferenceMetadata': AiInferenceMetadataClass,
|
|
38549
39596
|
'com.linkedin.pegasus2avro.ai.EntityInferenceMetadata': EntityInferenceMetadataClass,
|
|
38550
39597
|
'com.linkedin.pegasus2avro.ai.GlossaryTermsInferenceMetadata': GlossaryTermsInferenceMetadataClass,
|
|
@@ -38906,6 +39953,7 @@ __SCHEMA_TYPES = {
|
|
|
38906
39953
|
'com.linkedin.pegasus2avro.link.LinkPreviewType': LinkPreviewTypeClass,
|
|
38907
39954
|
'com.linkedin.pegasus2avro.logical.LogicalParent': LogicalParentClass,
|
|
38908
39955
|
'com.linkedin.pegasus2avro.metadata.key.ActionRequestKey': ActionRequestKeyClass,
|
|
39956
|
+
'com.linkedin.pegasus2avro.metadata.key.ActionWorkflowKey': ActionWorkflowKeyClass,
|
|
38909
39957
|
'com.linkedin.pegasus2avro.metadata.key.AnomalyKey': AnomalyKeyClass,
|
|
38910
39958
|
'com.linkedin.pegasus2avro.metadata.key.AssertionKey': AssertionKeyClass,
|
|
38911
39959
|
'com.linkedin.pegasus2avro.metadata.key.ChartKey': ChartKeyClass,
|
|
@@ -39284,6 +40332,26 @@ __SCHEMA_TYPES = {
|
|
|
39284
40332
|
'OwnerProposal': OwnerProposalClass,
|
|
39285
40333
|
'StructuredPropertyProposal': StructuredPropertyProposalClass,
|
|
39286
40334
|
'TagProposal': TagProposalClass,
|
|
40335
|
+
'ActionWorkflowCategory': ActionWorkflowCategoryClass,
|
|
40336
|
+
'ActionWorkflowEntrypoint': ActionWorkflowEntrypointClass,
|
|
40337
|
+
'ActionWorkflowEntrypointType': ActionWorkflowEntrypointTypeClass,
|
|
40338
|
+
'ActionWorkflowField': ActionWorkflowFieldClass,
|
|
40339
|
+
'ActionWorkflowFieldCondition': ActionWorkflowFieldConditionClass,
|
|
40340
|
+
'ActionWorkflowFieldConditionType': ActionWorkflowFieldConditionTypeClass,
|
|
40341
|
+
'ActionWorkflowForm': ActionWorkflowFormClass,
|
|
40342
|
+
'ActionWorkflowFormRequest': ActionWorkflowFormRequestClass,
|
|
40343
|
+
'ActionWorkflowFormRequestField': ActionWorkflowFormRequestFieldClass,
|
|
40344
|
+
'ActionWorkflowInfo': ActionWorkflowInfoClass,
|
|
40345
|
+
'ActionWorkflowRequestAccess': ActionWorkflowRequestAccessClass,
|
|
40346
|
+
'ActionWorkflowRequestStepState': ActionWorkflowRequestStepStateClass,
|
|
40347
|
+
'ActionWorkflowSingleFieldValueCondition': ActionWorkflowSingleFieldValueConditionClass,
|
|
40348
|
+
'ActionWorkflowStep': ActionWorkflowStepClass,
|
|
40349
|
+
'ActionWorkflowStepActors': ActionWorkflowStepActorsClass,
|
|
40350
|
+
'ActionWorkflowStepDynamicAssignment': ActionWorkflowStepDynamicAssignmentClass,
|
|
40351
|
+
'ActionWorkflowStepDynamicAssignmentType': ActionWorkflowStepDynamicAssignmentTypeClass,
|
|
40352
|
+
'ActionWorkflowStepType': ActionWorkflowStepTypeClass,
|
|
40353
|
+
'ActionWorkflowTrigger': ActionWorkflowTriggerClass,
|
|
40354
|
+
'ActionWorkflowTriggerType': ActionWorkflowTriggerTypeClass,
|
|
39287
40355
|
'AiInferenceMetadata': AiInferenceMetadataClass,
|
|
39288
40356
|
'EntityInferenceMetadata': EntityInferenceMetadataClass,
|
|
39289
40357
|
'GlossaryTermsInferenceMetadata': GlossaryTermsInferenceMetadataClass,
|
|
@@ -39645,6 +40713,7 @@ __SCHEMA_TYPES = {
|
|
|
39645
40713
|
'LinkPreviewType': LinkPreviewTypeClass,
|
|
39646
40714
|
'LogicalParent': LogicalParentClass,
|
|
39647
40715
|
'ActionRequestKey': ActionRequestKeyClass,
|
|
40716
|
+
'ActionWorkflowKey': ActionWorkflowKeyClass,
|
|
39648
40717
|
'AnomalyKey': AnomalyKeyClass,
|
|
39649
40718
|
'AssertionKey': AssertionKeyClass,
|
|
39650
40719
|
'ChartKey': ChartKeyClass,
|
|
@@ -40078,6 +41147,7 @@ ASPECT_CLASSES: List[Type[_Aspect]] = [
|
|
|
40078
41147
|
CorpGroupKeyClass,
|
|
40079
41148
|
VersionSetKeyClass,
|
|
40080
41149
|
AnomalyKeyClass,
|
|
41150
|
+
ActionWorkflowKeyClass,
|
|
40081
41151
|
ChartKeyClass,
|
|
40082
41152
|
DataHubPageTemplateKeyClass,
|
|
40083
41153
|
OwnershipTypeKeyClass,
|
|
@@ -40236,6 +41306,7 @@ ASPECT_CLASSES: List[Type[_Aspect]] = [
|
|
|
40236
41306
|
DataContractPropertiesClass,
|
|
40237
41307
|
DataContractStatusClass,
|
|
40238
41308
|
MonitorAnomalyEventClass,
|
|
41309
|
+
ActionWorkflowInfoClass,
|
|
40239
41310
|
DataHubIngestionSourceInfoClass,
|
|
40240
41311
|
GlossaryTermInfoClass,
|
|
40241
41312
|
GlossaryNodeInfoClass,
|
|
@@ -40370,6 +41441,7 @@ class AspectBag(TypedDict, total=False):
|
|
|
40370
41441
|
corpGroupKey: CorpGroupKeyClass
|
|
40371
41442
|
versionSetKey: VersionSetKeyClass
|
|
40372
41443
|
anomalyKey: AnomalyKeyClass
|
|
41444
|
+
actionWorkflowKey: ActionWorkflowKeyClass
|
|
40373
41445
|
chartKey: ChartKeyClass
|
|
40374
41446
|
dataHubPageTemplateKey: DataHubPageTemplateKeyClass
|
|
40375
41447
|
ownershipTypeKey: OwnershipTypeKeyClass
|
|
@@ -40528,6 +41600,7 @@ class AspectBag(TypedDict, total=False):
|
|
|
40528
41600
|
dataContractProperties: DataContractPropertiesClass
|
|
40529
41601
|
dataContractStatus: DataContractStatusClass
|
|
40530
41602
|
monitorAnomalyEvent: MonitorAnomalyEventClass
|
|
41603
|
+
actionWorkflowInfo: ActionWorkflowInfoClass
|
|
40531
41604
|
dataHubIngestionSourceInfo: DataHubIngestionSourceInfoClass
|
|
40532
41605
|
glossaryTermInfo: GlossaryTermInfoClass
|
|
40533
41606
|
glossaryNodeInfo: GlossaryNodeInfoClass
|
|
@@ -40614,6 +41687,7 @@ KEY_ASPECTS: Dict[str, Type[_Aspect]] = {
|
|
|
40614
41687
|
'mlPrimaryKey': MLPrimaryKeyKeyClass,
|
|
40615
41688
|
'corpGroup': CorpGroupKeyClass,
|
|
40616
41689
|
'versionSet': VersionSetKeyClass,
|
|
41690
|
+
'actionWorkflow': ActionWorkflowKeyClass,
|
|
40617
41691
|
'chart': ChartKeyClass,
|
|
40618
41692
|
'dataHubPageTemplate': DataHubPageTemplateKeyClass,
|
|
40619
41693
|
'ownershipType': OwnershipTypeKeyClass,
|
|
@@ -40691,6 +41765,7 @@ ENTITY_TYPE_NAMES: List[str] = [
|
|
|
40691
41765
|
'mlPrimaryKey',
|
|
40692
41766
|
'corpGroup',
|
|
40693
41767
|
'versionSet',
|
|
41768
|
+
'actionWorkflow',
|
|
40694
41769
|
'chart',
|
|
40695
41770
|
'dataHubPageTemplate',
|
|
40696
41771
|
'ownershipType',
|
|
@@ -40765,6 +41840,7 @@ EntityTypeName = Literal[
|
|
|
40765
41840
|
'mlPrimaryKey',
|
|
40766
41841
|
'corpGroup',
|
|
40767
41842
|
'versionSet',
|
|
41843
|
+
'actionWorkflow',
|
|
40768
41844
|
'chart',
|
|
40769
41845
|
'dataHubPageTemplate',
|
|
40770
41846
|
'ownershipType',
|