A constraint programming approach to the multi-cell furnace scheduling with assembly line job requirements