With ActivePivot 4.3.3, you can achieve it like this:
To prevent a node from joining the cluster before it's fully loaded, you can set the "autoStart" distribution property to false.
In your schema.xml file, add the following code
...
<distributionDescription>
<distributedPivotId> xxxx </distributedPivotId>
<clusterId> xxxx </clusterId>
<distributionType> xxxx </distributionType>
<properties>
<entry key="autoStart" value="false" />
</properties>
</distributionDescription>
...
Then, the messenger component, responsible for communication through the network, won't be started. You have to do it manually.
To start this component, you have to call its "start()" method. If you don't want to use JMX tools and do it programatically, you have to use the "ActivePivotManager" component. It provides methods to get the several instances of ActivePivot: use it to get the desired distributed ActivePivot.
Finally, use the "getMessenger()" method from the distributed ActivePivot to get the messenger component, and start it. The considered node will then join the cluster.
Assuming you have the manager, your code should look like the following :
ADistributedActivePivot myDistributedPivot = (ADistributedActivePivot) manager.getActivePivots().get("myDistributedPivot"); // Change it to the Id of your distributed pivot
myDistributedPivot.getMessenger().start();
To make a node join/leave the cluster, you can freely use the "pause()" and "resume()" method from its messenger.