I'm working on a project and created this little test to figure out my Java Script Expressions. Here is a basic overview of how this is built.
The large pulsing circles are precomposed animations that are reused for each of the 3 points. I've named these ORB_Comps. The Position variable has the following expression to create the jittery movement:
wiggle(2,10);
The connecting lines are Beam effects with endpoints defined with this expression:
Start Point = thisComp.layer("ORB_Comp 01").transform.position
End Point = thisComp.layer("ORB_Comp 02").transform.position
ORB_Comp ## defines the endpoints and moves the position of the Beam with the ORB_Comps
The smaller circles that travel along the Beams were a little trickier because it had to follow the beam which was connected by the orbs with a wiggle parameter. So the endpoints can't simply be defined by a fixed number. I ended up creating a Null object with a slider that ranged from 0 to 100, created some keyframes moving the slider from 0 to 100, easy eased them, and added this expression to loop that movement:
loopOut("pingpong")
Along with the slider I could then add the following expression to the small Pulsing Point:
s = thisComp.layer("SliderNull").effect("Slider Control")("Slider");
A = thisComp.layer("ORB_Comp 01").transform.position;
B = thisComp.layer("ORB_Comp 02").transform.position;
linear(s,0,100,A,B)
The expression linear(t, tMin, tMax, value1, value2). This takes the slider, 's', sets the min and max value of 's', in this case 0 to 100, and then changes the value from value1 to value2.
With these all combined together, it creates a set up that is independent of fixed positions and I can animate and move around the endpoints with all the connecting beams and pulse effects follow it perfectly.