코드로 비즈니스 논리 적용Apply business logic with code

가능하다면 요구 사항에 비즈니스 논리 정의가 포함되는 경우 여러 선언적 프로세스 옵션 중 하나를 적용하는 것을 고려해야 합니다.Whenever possible, you should first look to applying one of several declarative process options when a requirement involves defining business logic. Dynamics 365 Customer Engagement 사용자 지정 가이드: 프로세스를 통해 사용자 지정 비즈니스 논리 만들기See Dynamics 365 Customer Engagement Customization Guide: Create custom business logic through processes

선언적 프로세스가 요구 사항을 충족하지 않는 경우 개발자가 선택할 수 있는 여러 옵션이 있습니다.When a declarative process doesn’t meet a requirement, as a developer you have several options. 이 항목에서는 코드를 작성하는 일반적인 옵션을 소개합니다.This topic will introduce common options to write code.

워크플로 확장 만들기Create a workflow extension

프로세스 디자이너 내에서 새 옵션을 제공하는 .NET 어셈블리를 작성할 수 있습니다.You can write a .NET assembly to provide new options within the process designer. 이 방법은 워크플로 디자이너를 사용하는 사람들이 조건을 적용하거나 새 작업을 수행할 수 있는 새 옵션을 제공합니다.This method provides a new option for people using the workflow designer to apply a condition or perform a new action. 그 후에는 개발자가 아닌 사람들이 워크플로 확장을 다시 사용하여 코드의 논리를 적용할 수 있습니다.A workflow extension can then be re-used by people who are not developers to apply the logic in your code.

자세한 정보: Dynamics 365 Customer Engagement 개발자 가이드: 사용자 지정 워크플로 작업(워크플로 어셈블리)More information: Dynamics 365 Customer Engagement Developer Guide: Custom workflow activities (workflow assemblies)

플러그 인 만들기Create a plug-in

데이터 트랜잭션 흐름에 플러그 인하여 서버에 비즈니스 논리를 적용하는 .NET 어셈블리를 작성할 수 있습니다.You can write a .NET assembly to plug-in to the data transaction flow to apply business logic on the server. 앱용 Common Data Service에는 어셈블리의 클래스 내에 정의된 코드를 실행하는 특정 이벤트를 등록하는 데 사용하는 프레임워크가 있습니다.With Common Data Service for Apps there is a framework you use to register specific events to execute code defined within a class in an assembly. 이 클래스는 Execute 메서드를 노출하는 특정 인터페이스를 상속합니다.That class inherits a specific interface that exposes an Execute method. 등록된 이벤트가 발생하면 클래스의 Execute 메서드를 호출하여 이벤트에 대한 컨텍스트 데이터를 전달합니다.When the registered event occurs, the Execute method on the class is invoked and passed contextual data about the event.

개발자는 플러그 인 등록 도구를 사용하여 어셈블리를 등록합니다.You will use the Plug-in Registration Tool to register your assemblies.

Execute 메서드 내에서 SDK 어셈블리에 정의된 개체 모델을 사용하여 상황에 맞는 이벤트 데이터를 평가하고 다음을 수행하는 적절한 조치를 취할 수 있습니다.Within the Execute method, you can use the object model defined within the SDK Assemblies to evaluate the contextual event data and perform appropriate actions to do the following:

  • 오류를 throw하여 작업을 취소할 것인지 결정Determine whether to cancel the operation by throwing an error
  • Execute 메서드에 전달된 컨텍스트 데이터를 변경Make changes to the contextual data passed to the Execute method
  • 조직 서비스를 사용하여 프로세스를 자동화하는 추가 작업 수행Perform additional operations to automate processes using the Organization Service.

동기 및 비동기 플러그 인Synchronous and asynchronous plug-ins

플러그 인을 등록하면 트랜잭션 내에서 동기적으로 실행되거나 지연되어 서버에 미치는 영향이 적은 시간에 논리를 적용하는 큐에 전송될 수 있습니다.Plug-ins can be registered to execute synchronously within the transaction or to be deferred and sent to a queue that will apply the logic at a time that will have less impact on the server. 이러한 이유로 사람들은 비동기 플러그 인을 선호합니다.For this reason, asynchronous plug-ins are preferred.

이벤트에 대해 동기적으로 실행되도록 플러그 인을 등록할 때 코드 실행 시기에 대한 옵션이 제공됩니다.When you register the plugin to run synchronously for an event, you have options about when the code should run. 세 가지 단계가 있습니다.There are three stages:

이벤트Event 설명Description
유효성 검사 전Pre-validation 데이터베이스 트랜잭션이 시작되기 전에 발생합니다.Occurs before the database transaction begins. 트랜잭션 롤백 시 성능 저하를 피하기 위해 트랜잭션이 시작되기 전에 작업을 취소해야 하는지 여부를 결정하는 비즈니스 논리를 적용할 수 있는 좋은 위치입니다.This is a good place to apply business logic to determine whether the operation should be cancelled before the transaction begins to avoid the performance penalty of rolling back the transaction.
작업 전Pre-operation 데이터베이스 트랜잭션이 시작된 후 발생합니다.Occurs after the database transaction has started. 이 단계에서 작업을 취소하려면 트랜잭션을 롤백해야 합니다.Cancelling an operation at this stage must roll back the transaction
작업 후Post-operation 주 데이터 작업이 완료된 후 데이터베이스 트랜잭션 내에서 발생합니다.Occurs within the database transaction after the main data operation is completed. 이전 이벤트에서 적용된 변경 내용을 포함하지만 작업을 취소하는 경우 훨씬 더 큰 페널티가 발생합니다.Includes any changes which may have been applied in earlier events but incurs an even larger penalty when cancelling the operation.

참고

동기 플러그 인은 사용할 수 있는 시스템 리소스의 양에 제한이 있습니다.Synchronous plug-ins have constraints on the amount of system resources they can use. 플러그 인이 임계값을 초과하거나 응답하지 않는 경우 작업을 취소하면 예외가 throw 됩니다.If a plug-in exceeds thresholds or becomes unresponsive an exception will be thrown cancelling the operation.

자세한 정보: Dynamics 365 Customer Engagement 개발자 가이드: 비즈니스 프로세스를 확장하는 플러그 인 작성More information: Dynamics 365 Customer Engagement Developer Guide: Write plug-ins to extend business processes

참고 항목See also

Common Data Service for Apps 개발자 개요Common Data Service for Apps Developer Overview