# OpcFiniteStateMachineNode Members

> Reference: Defines a specialization of the OpcStateMachineNode that provides a mechanism to explicitly define the states and transitions.

<dl class="api-definition">
<dt>Type</dt>
<dd><a href="./">OpcFiniteStateMachineNode</a></dd>
<dt>Namespace</dt>
<dd><a href="../namespaces/opc.uafx">Opc.UaFx</a></dd>
<dt>Assembly</dt>
<dd>Opc.UaFx.Advanced.dll</dd>
<dt>Package</dt>
<dd>Opc.UaFx.Advanced v2.59.0</dd>
</dl>

Inherits members from [OpcObjectNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcobjectnode/members), [OpcInstanceNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcinstancenode/members), [OpcNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members).

## Constructors

### OpcFiniteStateMachineNode

<span class="api-meta">10 overloads</span>

| Overload | Description |
|---|---|
| [OpcFiniteStateMachineNode(OpcName)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/members#opcfinitestatemachinenode-opc-uafx-opcname) | Initializes a new instance of the [OpcFiniteStateMachineNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/) class accessible by the `name` specified. |
| [OpcFiniteStateMachineNode(OpcName, OpcNodeId)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/members#opcfinitestatemachinenode-opc-uafx-opcname-opc-uafx-opcnodeid) | Initializes a new instance of the [OpcFiniteStateMachineNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/) class accessible by the `name` and `id` specified. |
| [OpcFiniteStateMachineNode(IOpcNode, OpcName)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/members#opcfinitestatemachinenode-opc-uafx-iopcnode-opc-uafx-opcname) | Initializes a new instance of the [OpcFiniteStateMachineNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/) class accessible by the `name` specified as a child node of the `parent` node given. |
| [OpcFiniteStateMachineNode(IOpcNode, OpcName, OpcNodeId)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/members#opcfinitestatemachinenode-opc-uafx-iopcnode-opc-uafx-opcname-opc-uafx-opcnodeid) | Initializes a new instance of the [OpcFiniteStateMachineNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/) class accessible by the `name` and `id` specified as a child node of the `parent` node given. |
| [OpcFiniteStateMachineNode(FiniteStateMachineState)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/members#opcfinitestatemachinenode-opc-ua-finitestatemachinestate)<span class="api-meta">protected · since v2.50</span> | Initializes a new instance of the [OpcFiniteStateMachineNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/) class using the `content` as the instance to wrap. |
| [OpcFiniteStateMachineNode(FiniteStateMachineState, OpcNodeModel)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/members#opcfinitestatemachinenode-opc-ua-finitestatemachinestate-opc-uafx-opcnodemodel)<span class="api-meta">protected · since v2.50</span> | Initializes a new instance of the [OpcFiniteStateMachineNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/) class using the `content` as the instance to wrap. |
| [OpcFiniteStateMachineNode(OpcNodeModel, OpcName)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/members#opcfinitestatemachinenode-opc-uafx-opcnodemodel-opc-uafx-opcname)<span class="api-meta">protected · since v2.50</span> | Initializes a new instance of the [OpcFiniteStateMachineNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/) class accessible by the `name` specified. |
| [OpcFiniteStateMachineNode(OpcNodeModel, OpcName, OpcNodeId)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/members#opcfinitestatemachinenode-opc-uafx-opcnodemodel-opc-uafx-opcname-opc-uafx-opcnodeid)<span class="api-meta">protected · since v2.50</span> | Initializes a new instance of the [OpcFiniteStateMachineNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/) class accessible by the `name` and `id` specified. |
| [OpcFiniteStateMachineNode(OpcNodeModel, IOpcNode, OpcName)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/members#opcfinitestatemachinenode-opc-uafx-opcnodemodel-opc-uafx-iopcnode-opc-uafx-opcname)<span class="api-meta">protected · since v2.50</span> | Initializes a new instance of the [OpcFiniteStateMachineNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/) class accessible by the `name` specified as a child node of the `parent` node given. |
| [OpcFiniteStateMachineNode(OpcNodeModel, IOpcNode, OpcName, OpcNodeId)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/members#opcfinitestatemachinenode-opc-uafx-opcnodemodel-opc-uafx-iopcnode-opc-uafx-opcname-opc-uafx-opcnodeid)<span class="api-meta">protected · since v2.50</span> | Initializes a new instance of the [OpcFiniteStateMachineNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/) class accessible by the `name` and `id` specified as a child node of the `parent` node given. |

#### OpcFiniteStateMachineNode(OpcName)

Initializes a new instance of the [OpcFiniteStateMachineNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/) class accessible by the `name` specified.

<div class="api-signature" data-lang="csharp">

```csharp
public OpcFiniteStateMachineNode(OpcName name)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Sub New(name As OpcName)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `name` | [OpcName](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcname/) | The [OpcName](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcname/) through that the new finite state machine node can be accessed. |

#### OpcFiniteStateMachineNode(OpcName, OpcNodeId)

Initializes a new instance of the [OpcFiniteStateMachineNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/) class accessible by the `name` and `id` specified.

<div class="api-signature" data-lang="csharp">

```csharp
public OpcFiniteStateMachineNode(OpcName name, OpcNodeId id)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Sub New(name As OpcName, id As OpcNodeId)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `name` | [OpcName](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcname/) | The [OpcName](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcname/) through that the new finite state machine node can be accessed. |
| `id` | [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) | The [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) through that the new finite state machine node can be identified and accessed. |

#### OpcFiniteStateMachineNode(IOpcNode, OpcName)

Initializes a new instance of the [OpcFiniteStateMachineNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/) class accessible by the `name` specified as a child node of the `parent` node given.

<div class="api-signature" data-lang="csharp">

```csharp
public OpcFiniteStateMachineNode(IOpcNode parent, OpcName name)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Sub New(parent As IOpcNode, name As OpcName)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `parent` | [IOpcNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnode/) | The [IOpcNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnode/) used as the parent node or a null reference (Nothing in Visual Basic) in the case there is no parent node available. |
| `name` | [OpcName](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcname/) | The [OpcName](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcname/) through that the new finite state machine node can be accessed. |

#### OpcFiniteStateMachineNode(IOpcNode, OpcName, OpcNodeId)

Initializes a new instance of the [OpcFiniteStateMachineNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/) class accessible by the `name` and `id` specified as a child node of the `parent` node given.

<div class="api-signature" data-lang="csharp">

```csharp
public OpcFiniteStateMachineNode(IOpcNode parent, OpcName name, OpcNodeId id)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Sub New(parent As IOpcNode, name As OpcName, id As OpcNodeId)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `parent` | [IOpcNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnode/) | The [IOpcNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnode/) used as the parent node or a null reference (Nothing in Visual Basic) in the case there is no parent node available. |
| `name` | [OpcName](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcname/) | The [OpcName](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcname/) through that the new finite state machine node can be accessed. |
| `id` | [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) | The [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) through that the new finite state machine node can be identified and accessed. |

#### OpcFiniteStateMachineNode(FiniteStateMachineState)

<span class="api-meta">protected · since v2.50</span>

Initializes a new instance of the [OpcFiniteStateMachineNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/) class using the `content` as the instance to wrap.

<div class="api-signature" data-lang="csharp">

```csharp
protected OpcFiniteStateMachineNode(FiniteStateMachineState content)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Protected Sub New(content As FiniteStateMachineState)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `content` | <abbr title="OPC Foundation stack type, not documented here: Opc.Ua.FiniteStateMachineState">FiniteStateMachineState</abbr> | The <abbr title="OPC Foundation stack type, not documented here: Opc.Ua.FiniteStateMachineState">FiniteStateMachineState</abbr> to wrap. |

**Exceptions**

| Exception | Condition |
|---|---|
| [ArgumentNullException](https://learn.microsoft.com/dotnet/api/system.argumentnullexception) | The `content` is a null reference (Nothing in Visual Basic). |

#### OpcFiniteStateMachineNode(FiniteStateMachineState, OpcNodeModel)

<span class="api-meta">protected · since v2.50</span>

Initializes a new instance of the [OpcFiniteStateMachineNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/) class using the `content` as the instance to wrap.

<div class="api-signature" data-lang="csharp">

```csharp
protected OpcFiniteStateMachineNode(
    FiniteStateMachineState content,
    OpcNodeModel model)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Protected Sub New(content As FiniteStateMachineState, model As OpcNodeModel)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `content` | <abbr title="OPC Foundation stack type, not documented here: Opc.Ua.FiniteStateMachineState">FiniteStateMachineState</abbr> | The <abbr title="OPC Foundation stack type, not documented here: Opc.Ua.FiniteStateMachineState">FiniteStateMachineState</abbr> to wrap. |
| `model` | [OpcNodeModel](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodemodel/) | The [OpcNodeModel](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodemodel/) which defines the modelling directives for the new node or a null reference (Nothing in Visual Basic) if there are no directives are to be applied to the node. |

**Exceptions**

| Exception | Condition |
|---|---|
| [ArgumentNullException](https://learn.microsoft.com/dotnet/api/system.argumentnullexception) | The `content` is a null reference (Nothing in Visual Basic). |

#### OpcFiniteStateMachineNode(OpcNodeModel, OpcName)

<span class="api-meta">protected · since v2.50</span>

Initializes a new instance of the [OpcFiniteStateMachineNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/) class accessible by the `name` specified.

<div class="api-signature" data-lang="csharp">

```csharp
protected OpcFiniteStateMachineNode(OpcNodeModel model, OpcName name)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Protected Sub New(model As OpcNodeModel, name As OpcName)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `model` | [OpcNodeModel](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodemodel/) | The [OpcNodeModel](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodemodel/) which defines the modelling directives for the new node or a null reference (Nothing in Visual Basic) if there are no directives are to be applied to the node. |
| `name` | [OpcName](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcname/) | The [OpcName](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcname/) through that the new finite state machine node can be accessed. |

#### OpcFiniteStateMachineNode(OpcNodeModel, OpcName, OpcNodeId)

<span class="api-meta">protected · since v2.50</span>

Initializes a new instance of the [OpcFiniteStateMachineNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/) class accessible by the `name` and `id` specified.

<div class="api-signature" data-lang="csharp">

```csharp
protected OpcFiniteStateMachineNode(
    OpcNodeModel model,
    OpcName name,
    OpcNodeId id)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Protected Sub New(model As OpcNodeModel, name As OpcName, id As OpcNodeId)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `model` | [OpcNodeModel](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodemodel/) | The [OpcNodeModel](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodemodel/) which defines the modelling directives for the new node or a null reference (Nothing in Visual Basic) if there are no directives are to be applied to the node. |
| `name` | [OpcName](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcname/) | The [OpcName](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcname/) through that the new finite state machine node can be accessed. |
| `id` | [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) | The [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) through that the new finite state machine node can be identified and accessed. |

#### OpcFiniteStateMachineNode(OpcNodeModel, IOpcNode, OpcName)

<span class="api-meta">protected · since v2.50</span>

Initializes a new instance of the [OpcFiniteStateMachineNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/) class accessible by the `name` specified as a child node of the `parent` node given.

<div class="api-signature" data-lang="csharp">

```csharp
protected OpcFiniteStateMachineNode(
    OpcNodeModel model,
    IOpcNode parent,
    OpcName name)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Protected Sub New(model As OpcNodeModel, parent As IOpcNode, name As OpcName)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `model` | [OpcNodeModel](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodemodel/) | The [OpcNodeModel](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodemodel/) which defines the modelling directives for the new node or a null reference (Nothing in Visual Basic) if there are no directives are to be applied to the node. |
| `parent` | [IOpcNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnode/) | The [IOpcNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnode/) used as the parent node or a null reference (Nothing in Visual Basic) in the case there is no parent node available. |
| `name` | [OpcName](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcname/) | The [OpcName](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcname/) through that the new finite state machine node can be accessed. |

#### OpcFiniteStateMachineNode(OpcNodeModel, IOpcNode, OpcName, OpcNodeId)

<span class="api-meta">protected · since v2.50</span>

Initializes a new instance of the [OpcFiniteStateMachineNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/) class accessible by the `name` and `id` specified as a child node of the `parent` node given.

<div class="api-signature" data-lang="csharp">

```csharp
protected OpcFiniteStateMachineNode(
    OpcNodeModel model,
    IOpcNode parent,
    OpcName name,
    OpcNodeId id)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Protected Sub New(
    model As OpcNodeModel,
    parent As IOpcNode,
    name As OpcName,
    id As OpcNodeId)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `model` | [OpcNodeModel](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodemodel/) | The [OpcNodeModel](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodemodel/) which defines the modelling directives for the new node or a null reference (Nothing in Visual Basic) if there are no directives are to be applied to the node. |
| `parent` | [IOpcNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnode/) | The [IOpcNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcnode/) used as the parent node or a null reference (Nothing in Visual Basic) in the case there is no parent node available. |
| `name` | [OpcName](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcname/) | The [OpcName](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcname/) through that the new finite state machine node can be accessed. |
| `id` | [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) | The [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) through that the new finite state machine node can be identified and accessed. |

## Properties

### AvailableStates

<span class="api-meta">since v2.54</span>

Gets the available states of the [OpcFiniteStateMachineNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/).

<div class="api-signature" data-lang="csharp">

```csharp
public OpcNodeId[] AvailableStates { get; set; }
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Property AvailableStates As OpcNodeId()
```

</div>

**Property value**

[OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/)[]

An array of [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) instances identifying the available states, or a null reference (Nothing in Visual Basic) if the state machine has no AvailableStates variable or the variable has no value.

### AvailableStatesNode

<span class="api-meta">since v2.54</span>

Gets the [OpcNodeIdArrayVariableNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeidarrayvariablenode/) of the [AvailableStates](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/members#availablestates) property.

<div class="api-signature" data-lang="csharp">

```csharp
public OpcNodeIdArrayVariableNode AvailableStatesNode { get; }
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public ReadOnly Property AvailableStatesNode As OpcNodeIdArrayVariableNode
```

</div>

**Property value**

[OpcNodeIdArrayVariableNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeidarrayvariablenode/)

An instance of the [OpcNodeIdArrayVariableNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeidarrayvariablenode/) class.

### AvailableTransitions

<span class="api-meta">since v2.54</span>

Gets the available transitions of the [OpcFiniteStateMachineNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/).

<div class="api-signature" data-lang="csharp">

```csharp
public OpcNodeId[] AvailableTransitions { get; set; }
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Property AvailableTransitions As OpcNodeId()
```

</div>

**Property value**

[OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/)[]

An array of [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) instances identifying the available transitions, or a null reference (Nothing in Visual Basic) if the state machine has no AvailableTransitions variable or the variable has no value.

### AvailableTransitionsNode

<span class="api-meta">since v2.54</span>

Gets the [OpcNodeIdArrayVariableNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeidarrayvariablenode/) of the [AvailableTransitions](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/members#availabletransitions) property.

<div class="api-signature" data-lang="csharp">

```csharp
public OpcNodeIdArrayVariableNode AvailableTransitionsNode { get; }
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public ReadOnly Property AvailableTransitionsNode As OpcNodeIdArrayVariableNode
```

</div>

**Property value**

[OpcNodeIdArrayVariableNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeidarrayvariablenode/)

An instance of the [OpcNodeIdArrayVariableNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeidarrayvariablenode/) class.

### CurrentState

<span class="api-meta">override</span>

Gets the current state of the [OpcFiniteStateMachineNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/) and provides a human readable name for the current state which may not be suitable for use in application control logic. Applications should use the [VariableId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatevariablenode/members#variableid) property of the [CurrentStateNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/members#currentstatenode) if they need a unique identifier for the state.

<div class="api-signature" data-lang="csharp">

```csharp
public override OpcText CurrentState { get; set; }
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Overrides Property CurrentState As OpcText
```

</div>

**Property value**

[OpcText](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opctext/)

A human readable name for the current state which may not be suitable for use in application control logic.

**Overrides**

[CurrentState](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcstatemachinenode/members#currentstate)

**Implements**

[CurrentState](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcstatemachine/members#currentstate)

### CurrentStateNode

Gets the [OpcFiniteStateVariableNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatevariablenode/) of the [CurrentState](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/members#currentstate) property.

<div class="api-signature" data-lang="csharp">

```csharp
public OpcFiniteStateVariableNode CurrentStateNode { get; }
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public ReadOnly Property CurrentStateNode As OpcFiniteStateVariableNode
```

</div>

**Property value**

[OpcFiniteStateVariableNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatevariablenode/)

An instance of the [OpcFiniteStateVariableNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatevariablenode/) class.

### DefaultTypeDefinitionId

<span class="api-meta">protected · override</span>

Gets the default identifier which identifies the node that defines the underlying node type from that this [OpcInstanceNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcinstancenode/) has been created.

<div class="api-signature" data-lang="csharp">

```csharp
protected override OpcNodeId DefaultTypeDefinitionId { get; }
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Protected Overrides ReadOnly Property DefaultTypeDefinitionId As OpcNodeId
```

</div>

**Property value**

[OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/)

The [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) of the type node from that this [OpcInstanceNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcinstancenode/) has been created from. These type node defines the typical structure of an instance node of its type definition. If there exists no specific type definition node a null reference (Nothing in Visual Basic).

**Overrides**

[DefaultTypeDefinitionId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcstatemachinenode/members#defaulttypedefinitionid)

### LastTransition

<span class="api-meta">override</span>

Gets the last transition which occurred in an instance and provides a human readable name for the last transition which may not be suitable for use in application control logic. Applications should use the [VariableId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitetransitionvariablenode/members#variableid) property of the [LastTransitionNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/members#lasttransitionnode) if they need a unique identifier for the transition.

<div class="api-signature" data-lang="csharp">

```csharp
public override OpcText LastTransition { get; set; }
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Overrides Property LastTransition As OpcText
```

</div>

**Property value**

[OpcText](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opctext/)

A human readable name for the last transition which may not be suitable for use in application control logic.

**Overrides**

[LastTransition](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcstatemachinenode/members#lasttransition)

**Implements**

[LastTransition](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcstatemachine/members#lasttransition)

### LastTransitionNode

Gets the [OpcFiniteTransitionVariableNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitetransitionvariablenode/) of the [LastTransition](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/members#lasttransition) property.

<div class="api-signature" data-lang="csharp">

```csharp
public OpcFiniteTransitionVariableNode LastTransitionNode { get; }
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public ReadOnly Property LastTransitionNode As OpcFiniteTransitionVariableNode
```

</div>

**Property value**

[OpcFiniteTransitionVariableNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitetransitionvariablenode/)

An instance of the [OpcFiniteTransitionVariableNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitetransitionvariablenode/) class, or `null` if this node is not present.

### SupportsCurrentState

<span class="api-meta">virtual · since v2.54</span>

Gets a value indicating whether the current [OpcFiniteStateMachineNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/) does support changes of the [CurrentState](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/members#currentstate);

<div class="api-signature" data-lang="csharp">

```csharp
public virtual bool SupportsCurrentState { get; }
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Overridable ReadOnly Property SupportsCurrentState As Boolean
```

</div>

**Property value**

[Boolean](https://learn.microsoft.com/dotnet/api/system.boolean)

The value true in case the [OpcFiniteStateMachineNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/) supports state changes; otherwise the value false. The default value is true.

**Implements**

[SupportsCurrentState](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcstatemachine/members#supportscurrentstate)

## Methods

### CanChangeStateTo

<span class="api-meta">2 overloads · since v2.54</span>

| Overload | Description |
|---|---|
| [CanChangeStateTo(OpcContext, object)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/members#canchangestateto-opc-uafx-opccontext-system-object)<span class="api-meta">since v2.54</span> | Determines whether the [CurrentState](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/members#currentstate) can be changed to the `newState` specified using the further specified `context`. |
| [CanChangeStateTo(OpcContext, object, object)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/members#canchangestateto-opc-uafx-opccontext-system-object-system-object)<span class="api-meta">since v2.54</span> | Determines whether the `oldState` can be changed to the `newState` specified using the further specified `context`. |

**Exceptions (all overloads)**

| Exception | Condition |
|---|---|
| [ArgumentNullException](https://learn.microsoft.com/dotnet/api/system.argumentnullexception) | The `context` or `newState` is a null reference (Nothing in Visual Basic). |

#### CanChangeStateTo(OpcContext, object)

<span class="api-meta">since v2.54</span>

Determines whether the [CurrentState](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/members#currentstate) can be changed to the `newState` specified using the further specified `context`.

<div class="api-signature" data-lang="csharp">

```csharp
public bool CanChangeStateTo(OpcContext context, object newState)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Function CanChangeStateTo(
    context As OpcContext,
    newState As Object) As Boolean
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `context` | [OpcContext](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opccontext/) | The [OpcContext](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opccontext/) to use to determine. |
| `newState` | [Object](https://learn.microsoft.com/dotnet/api/system.object) | The state number or enum of the state to determine. |

**Returns**

[Boolean](https://learn.microsoft.com/dotnet/api/system.boolean)

**Implements**

[CanChangeStateTo](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcstatemachine/members#canchangestateto-opc-uafx-opccontext-system-object)

**Remarks**

In case [SupportsCurrentState](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/members#supportscurrentstate) is equals false, this method does always returns false.

#### CanChangeStateTo(OpcContext, object, object)

<span class="api-meta">since v2.54</span>

Determines whether the `oldState` can be changed to the `newState` specified using the further specified `context`.

<div class="api-signature" data-lang="csharp">

```csharp
public bool CanChangeStateTo(
    OpcContext context,
    object oldState,
    object newState)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Function CanChangeStateTo(
    context As OpcContext,
    oldState As Object,
    newState As Object) As Boolean
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `context` | [OpcContext](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opccontext/) | The [OpcContext](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opccontext/) to use to determine. |
| `oldState` | [Object](https://learn.microsoft.com/dotnet/api/system.object) | The assumed current state number or enum of the state to determine. |
| `newState` | [Object](https://learn.microsoft.com/dotnet/api/system.object) | The dedicated new state number or enum of the state to determine. |

**Returns**

[Boolean](https://learn.microsoft.com/dotnet/api/system.boolean)

**Implements**

[CanChangeStateTo](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcstatemachine/members#canchangestateto-opc-uafx-opccontext-system-object-system-object)

### ChangeStateTo

<span class="api-meta">since v2.29</span>

Changes the [CurrentState](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/members#currentstate) to the `newState` specified using the further specified `context`.

<div class="api-signature" data-lang="csharp">

```csharp
public void ChangeStateTo(OpcContext context, object newState)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Sub ChangeStateTo(context As OpcContext, newState As Object)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `context` | [OpcContext](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opccontext/) | The [OpcContext](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opccontext/) to use to change. |
| `newState` | [Object](https://learn.microsoft.com/dotnet/api/system.object) | The state number or enum of the state to change to. |

**Exceptions**

| Exception | Condition |
|---|---|
| [ArgumentException](https://learn.microsoft.com/dotnet/api/system.argumentexception) | The `newState` is not a known state. |
| [ArgumentNullException](https://learn.microsoft.com/dotnet/api/system.argumentnullexception) | The `context` or `newState` is a null reference (Nothing in Visual Basic). |
| [InvalidOperationException](https://learn.microsoft.com/dotnet/api/system.invalidoperationexception) | No transition leads from the current state to the `newState`. |
| [OpcException](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcexception/) | The change operation failed (see exception details for more information). |

**Implements**

[ChangeStateTo](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.iopcstatemachine/members#changestateto)

**Remarks**

In case [SupportsCurrentState](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/members#supportscurrentstate) is equals false, this method does not perform any state changes.

### CreateSubStatesMachineNode

<span class="api-meta">protected · virtual · since v2.54</span>

When overridden in a derived class, creates the state machine of the sub-states of the `state` specified.

<div class="api-signature" data-lang="csharp">

```csharp
protected virtual OpcFiniteStateMachineNode CreateSubStatesMachineNode(
    object state)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Protected Overridable Function CreateSubStatesMachineNode(
    state As Object) As OpcFiniteStateMachineNode
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `state` | [Object](https://learn.microsoft.com/dotnet/api/system.object) | The state number of a state for which the type definition of the state machine declares a state machine of sub-states. |

**Returns**

[OpcFiniteStateMachineNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/)

The state machine of the sub-states of the `state`. The default implementation returns a null reference (Nothing in Visual Basic).

**Remarks**

The method is called when the states and transitions of the state machine are determined from its type definition.

### GetSubStatesMachineNode

<span class="api-meta">2 overloads · since v2.54</span>

| Overload | Description |
|---|---|
| [GetSubStatesMachineNode()](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/members#getsubstatesmachinenode-noparams)<span class="api-meta">since v2.54</span> | Gets the state machine of the sub-states of the current state. |
| [GetSubStatesMachineNode(object)](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/members#getsubstatesmachinenode-system-object)<span class="api-meta">since v2.54</span> | Gets the state machine of the sub-states of the `state` specified. |

#### GetSubStatesMachineNode()

<span class="api-meta">since v2.54</span>

Gets the state machine of the sub-states of the current state.

<div class="api-signature" data-lang="csharp">

```csharp
public OpcFiniteStateMachineNode GetSubStatesMachineNode()
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Function GetSubStatesMachineNode() As OpcFiniteStateMachineNode
```

</div>

**Returns**

[OpcFiniteStateMachineNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/)

The state machine of the sub-states of the current state, or a null reference (Nothing in Visual Basic) if the current state has none.

#### GetSubStatesMachineNode(object)

<span class="api-meta">since v2.54</span>

Gets the state machine of the sub-states of the `state` specified.

<div class="api-signature" data-lang="csharp">

```csharp
public OpcFiniteStateMachineNode GetSubStatesMachineNode(object state)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Function GetSubStatesMachineNode(
    state As Object) As OpcFiniteStateMachineNode
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `state` | [Object](https://learn.microsoft.com/dotnet/api/system.object) | The state number or the enumeration member of the state, or a null reference (Nothing in Visual Basic) for the current state. |

**Returns**

[OpcFiniteStateMachineNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/)

The state machine of the sub-states of the `state`, or a null reference (Nothing in Visual Basic) if the state has none.

### IsAccessible

<span class="api-meta">override · since v2.54</span>

Determines whether the node is accessible using the `context` specified within the view identified by the `viewId` specified.

<div class="api-signature" data-lang="csharp">

```csharp
public override bool IsAccessible(OpcContext context, OpcNodeId viewId)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Public Overrides Function IsAccessible(
    context As OpcContext,
    viewId As OpcNodeId) As Boolean
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `context` | [OpcContext](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opccontext/) | The [OpcContext](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opccontext/) within that the node is accessed. |
| `viewId` | [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) | The [OpcNodeId](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/) of the view within that the node is accessed or [Null](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeid/members#null) if the node is not accessed within a specific view. |

**Returns**

[Boolean](https://learn.microsoft.com/dotnet/api/system.boolean)

The value false if the node is the state machine of the sub-states of a state (see [CreateSubStatesMachineNode](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcfinitestatemachinenode/members#createsubstatesmachinenode)); otherwise the value true.

**Overrides**

[IsAccessible](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#isaccessible)

### OnBeforeAdded

<span class="api-meta">protected · override · since v2.29</span>

Raises the [BeforeAdded](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#beforeadded) event using the event data specified.

<div class="api-signature" data-lang="csharp">

```csharp
protected override void OnBeforeAdded(OpcNodeAddedEventArgs e)
```

</div>

<div class="api-signature" data-lang="vbnet">

```vbnet
Protected Overrides Sub OnBeforeAdded(e As OpcNodeAddedEventArgs)
```

</div>

**Parameters**

| Name | Type | Description |
|---|---|---|
| `e` | [OpcNodeAddedEventArgs](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeaddedeventargs/) | The [OpcNodeAddedEventArgs](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnodeaddedeventargs/) with the event data. |

**Overrides**

[OnBeforeAdded](https://www.traeger.de/en/docs/development/opcua/api/v2.59/opc.uafx.opcnode/members#onbeforeadded)
