class IdGeneratorHolder {

	private RequestIdGenerator requestIdGenerator;

	private static IdGeneratorHolder INSTANCE = new IdGeneratorHolder();

	public static void init() {<FILL_FUNCTION_BODY>}

	public static IdGeneratorHolder getInstance() {
		return INSTANCE;
	}

	public String generate() {
		if (ObjectUtil.isNull(requestIdGenerator)){
			init();
		}
		return requestIdGenerator.generate();
	}

	public RequestIdGenerator getRequestIdGenerator() {
		return requestIdGenerator;
	}

	public void setRequestIdGenerator(RequestIdGenerator requestIdGenerator) {
		this.requestIdGenerator = requestIdGenerator;
	}

}

		try {
			LiteflowConfig liteflowConfig = LiteflowConfigGetter.get();
			String requestIdGeneratorClass = liteflowConfig.getRequestIdGeneratorClass();

			RequestIdGenerator requestIdGenerator;
			if (StrUtil.isBlank(requestIdGeneratorClass)) {
				requestIdGenerator = new DefaultRequestIdGenerator();
			}
			else {
				Class<RequestIdGenerator> idGenerateClass = (Class<RequestIdGenerator>) Class
					.forName(requestIdGeneratorClass);
				requestIdGenerator = ContextAwareHolder.loadContextAware().registerBean(idGenerateClass);
			}
			INSTANCE.setRequestIdGenerator(requestIdGenerator);
		}
		catch (Exception e) {
			throw new RequestIdGeneratorException(e.getMessage());
		}
	
<no_super_class>