我开始使用Spring Statemachine,但在管理对象的状态时遇到了一些麻烦。
@Service
public class StateMachineServiceImpl implements IStateMachineService {
@Autowired
private IShipmentService shipmentService;
@Override
public StateMachine<ShipmentState, ShipmentEvent> getShipmentStateMachine(Shipment aShipment) throws Exception {
Builder<ShipmentState, ShipmentEvent> builder = StateMachineBuilder.builder();
builder.configureStates().withStates()
.state(ShipmentState.S1)
.state(ShipmentState.S2)
.state(ShipmentState.S3)
.initial(shipmentService.getState())
.end(ShipmentState.S4);
builder.configureTransitions().withExternal().source(ShipmentState.S1).target(ShipmentState.S1)
.event(ShipmentEvent.S3).action(shipmentService.updateAction()).and().withExternal()
.source(ShipmentState.S1).target(ShipmentState.S2).event(ShipmentEvent.S3)
.action(shipmentService.finalizeAction()).and().withExternal().source(ShipmentState.S3)
.target(ShipmentEvent.S4).action(shipmentService.closeAction()).event(ShipmentEvent.S5);
return builder.build();
}
}
你觉得我的做法怎么样?
这种方法没有问题。您可以使用以下代码将状态机重置为特定状态。
stateMachine.getStateMachineAccessor().doWithAllRegions(access -> access
.resetStateMachine(new DefaultStateMachineContext<>(state, null, null,null)));
您可以根据您的用例将参数传递给DefaultStateMachineContext
。
返回当前日期: .fullCalendar('getDate') 点击按钮显示当前时间的例子: $('#my-button').click(function() { var d = $('#calendar').fullCalendar('getDate'); alert("The current date of the calendar is " + d); }); 官方英文文档
日程表前进或者后退任意的时间: .fullCalendar('incrementDate', years [, months, [ days ]]) 举例,日程表前进3个月: $('#calendar').fullCalendar('incrementDate', 0, 3, 0); 日程表后退2个月 $('#calendar').fullCalendar('incrementDate', 0,
日程表跳转到任意日期: .fullCalendar('gotoDate', year [, month, [ date ]]) 需要注意,月是从0开始的。此方法也可以使用一个参数,一个Date对象(版本大于1.3.2) 官方英文文档:http://arshaw.com/fullcalendar/docs/current_date/gotoDate/
日程表跳到今天: .fullCalendar('today') 外部按钮跳转到今天的例子: $('#my-today-button').click(function() { $('#calendar').fullCalendar('today'); }); 官方英文文档:http://arshaw.com/fullcalendar/docs/current_date/today/
日程表前进一年: .fullCalendar('nextYear') 1.3.x版本没有此方法,可以使用 .fullCalendar(‘incrementDate’, 1) 代替 官方英文文档:http://arshaw.com/fullcalendar/docs/current_date/nextYear/
日程表后退一年: .fullCalendar('prevYear') 1.3.x版本的FullCalendar没有此方法,可以使用 .fullCalendar(‘incrementDate’, -1) 代替。 官方英文文档:http://arshaw.com/fullcalendar/docs/current_date/prevYear/