If you are only copying products from one work order to another then I recommend you can do that all with workflows if you use Workflow Elements from Kaskela. https://kaskelasolutions.com/
1. create a lookup field on the work order that will link it to a new work order record - call the lookup "copy to work order"
2. in your work order, set up a trigger event to start a "parent" workflow (could be a custom option set, status change or a button on the ribbon - your choice)
3. create a child workflow on the Work Order Product entity that will create a copy of itself as a new work order product, but will use the "copy to work order" lookup on the parent to link the child W/O products to their new parent record
4. create the parent workflow that will create a new work order record, update the lookup value (step 1) , then use the "Query – Run Workflow on Results" in Workflow Elements to start the child workflow. the magic here is that for each product on the original Work Order, the child workflow can use the new work order lookup to create a copy of the Work Order Product record over to the new work order that was created by the parent workflow.
If this answer was correct, please come back and update this discussion.