코드를 사용하여 비즈니스 프로세스 흐름 작업Work with business process flows using code

참고

Microsoft Flow는 이제 Power Automate입니다.Microsoft Flow is now Power Automate. 자세한 내용은 블로그를 참조하세요.For more information, see this blog.

이 콘텐츠는 향후에 브랜딩 변경을 반영하기 위해 업데이트될 예정입니다.This content will be updated to reflect the branding change in the coming days.

‘비즈니스 프로세스 흐름’을 사용하면 더 효율적이고 간소화된 영업, 서비스 및 기타 비즈니스 프로세스를 만들 수 있습니다.**A business process flow lets you create more efficient and streamlined sales, service, and other business processes. 엔터티 양식의 맨 위에 특수 컨트롤을 배치하여 비즈니스 프로세스의 시각화를 만듭니다.It creates a visualization of your business process by placing special controls at the top of the entity forms. 사용자는 영업, 마케팅 또는 서비스 프로세스의 다양한 스테이지를 통해 완료할 때까지 진행됩니다.Users are guided through various stages of sales, marketing, or service processes towards completion. 각 프로세스는 여러 스테이지와 단계를 지원합니다.Each process supports multiple stages and steps. 단계를 추가 또는 제거하거나, 스테이지 순서를 변경하거나, 비즈니스 프로세스 흐름에 새 엔터티를 추가할 수 있습니다.You can add or remove steps, change the order of stages, or add new entities to the business process flow.

여러 비즈니스 프로세스 흐름 인스턴스가 동일한 엔터티 레코드에서 동시에 실행될 수 있습니다.Different business process flow instances can run concurrently against the same entity record. 사용자는 동시 비즈니스 프로세스 인스턴스 간에 전환하고 프로세스의 현재 스테이지에서 작업을 다시 시작할 수 있습니다.Users can switch between concurrent business process instances, and resume their work at a current stage in the process.

이 항목에서는 비즈니스 프로세스 흐름을 프로그래밍 방식으로 사용하는 방법을 설명합니다.This topic provides information about how you can programmatically work with business process flows.

참고

비즈니스 프로세스 흐름을 사용하기 위해 코드를 작성할 필요는 없습니다.You don't have to write code to work with business process flows. UI를 사용하여 비즈니스 프로세스 흐름을 만들고 관리하는 방법에 대한 자세한 내용은 비즈니스 프로세스 흐름 개요를 참조하세요.For information about using the UI to create and manage business process flows, see Business Process Flows overview

비즈니스 프로세스 흐름의 필수 구성 요소Prerequisites for business process flow

사용자 지정 엔터티 및 업데이트된 UI 양식이 있는 엔터티는 비즈니스 프로세스 흐름에 참여할 수 있습니다.Custom entities and entities that have updated UI forms can participate in the business process flow. 업데이트된 UI 엔터티에는 true로 설정된 IsAIRUpdated 속성이 있습니다.The updated UI entities have the IsAIRUpdated property set to true.

비즈니스 프로세스 흐름에 대해 엔터티를 활성화하려면 IsBusinessProcessEnabled 속성을 true로 설정합니다.To enable an entity for the business process flow, set the IsBusinessProcessEnabled property to true.

중요

비즈니스 프로세스 흐름의 엔터티를 사용하도록 설정하는 것은 단방향 프로세스입니다.Enabling an entity for business process flow is a one way process. 되돌릴 수 없습니다.You can’t reverse it.

비즈니스 프로세스 흐름 정의Define business process flow

시각적 비즈니스 프로세스 흐름 디자이너를 사용하여 비즈니스 프로세스 흐름을 정의합니다.Use the visual business process flow designer to define a business process flow. 추가 정보: 비즈니스 프로세스 흐름 만들기More information: Create a business process flow

기본적으로 비즈니스 프로세스 흐름 레코드는 Draft 상태로 만들어집니다.By default, a business process flow record is created in the Draft state.

비즈니스 프로세스 흐름 정의는 workflow 엔터티에 저장되고 비즈니스 프로세스 흐름의 스테이지 정보는 processstage 엔터티에 저장됩니다.A business process flow definition is stored in the workflow entity, and the stage information for the business process flow is stored in the processstage entity.

비즈니스 프로세스 흐름 활성화Activate business process flow

프로세스 흐름을 사용하려면 먼저 프로세스 흐름을 활성화해야 합니다.Before you can use the process flow, you have to activate it. 활성화하려면 Workflow 엔터티에 대한 prvActivateBusinessProcessFlow 권한이 있어야 합니다.To activate it, you must have the prvActivateBusinessProcessFlow privilege for the Workflow entity. UpdateRequest 메시지를 사용하여 Workflow 엔터티 레코드의 상태를 Activated로 설정합니다.Use the UpdateRequest message to set the state of the Workflow entity record to Activated. 추가 정보: 업데이트를 사용하여 특수화된 작업 수행More information: Perform specialized operations using Update

참고

비즈니스 프로세스 흐름 디자이너를 사용하여 비즈니스 프로세스 흐름을 활성화할 수도 있습니다.You can also use the business process flow designer to activate a business process flow.

비즈니스 프로세스 흐름 엔터티Business process flow entity

해당 Workflow 엔터티 레코드의 상태를 변경하거나 비즈니스 프로세스 흐름 디자이너를 사용하여 비즈니스 프로세스 흐름 정의를 활성화하면, 활성화된 비즈니스 프로세스 흐름 인스턴스를 저장하기 위해 다음 이름의 사용자 지정 엔터티가 자동으로 만들어집니다. “<activesolutionprefix><uniquename>”. 여기서 uniquename은 사용자가 지정한 이름에서 파생됩니다.Once you activate a business process flow definition by changing the state of the corresponding Workflow entity record or by using the business process flow designer, a custom entity with the following name is automatically created to store the activated business process flow instances: "<activesolutionprefix><uniquename>", where the uniquename is derived from the name you specify.

예를 들어 “My Custom BPF”를 비즈니스 프로세스 흐름 정의의 이름으로 지정하고 활성 솔루션에 기본 게시자(new)를 사용하는 경우 프로세스 인스턴스를 저장하기 위해 만들어진 사용자 지정 엔터티의 이름은 “new_mycustombpf”가 됩니다.For example, if you specified "My Custom BPF" as the name of the business process flow definition and are using the default publisher (new) for your active solution, the name of the custom entity created for storing process instances will be "new_mycustombpf".

비즈니스 프로세스 흐름 정의에 uniquename 값을 사용할 수 없는 경우(예: 이전 버전에서 솔루션의 일부로 비즈니스 프로세스 흐름을 가져온 경우) 사용자 지정 엔터티의 기본 이름은 "\<activesolutionprefix>_bpf_<GUID_BPF_Definition>입니다.If the uniquename value isn't available for a business process flow definition, for example if the business process flow was imported as part of solution from an earlier version, the default name of the custom entity will be "\<activesolutionprefix>_bpf_<GUID_BPF_Definition>:

중요

샘플 비즈니스 프로세스 흐름 레코드는 시스템 엔터티를 사용하여 해당 비즈니스 프로세스 흐름 인스턴스 레코드를 저장합니다.The sample business process flow records use system entities to store the corresponding business process flow instance records.

그러나 이전에 설명한 대로 사용자가 만드는 새 비즈니스 프로세스 흐름 정의는 사용자 지정 엔터티를 사용하여 해당 인스턴스 레코드를 저장합니다.However, any new business process flow definitions you create will use custom entities to store its instance records as explained earlier.

다음 방법을 사용하여 비즈니스 프로세스 흐름 엔터티의 이름을 검색할 수 있습니다.You can retrieve the name of your business process flow entity using any of the following ways:

  • UI 사용: 사용자 지정 UI를 사용하여 비즈니스 프로세스 흐름 엔터티를 찾아봅니다.Using the UI: Use the customization UI to browse to your business process flow entity:

  • 웹 API 사용: 다음 요청을 사용합니다.Using the Web API: Use the following request:

    요청Request

    GET [Organization URI]/api/data/v9.0/workflows?$filter=name eq 'My Custom BPF'&$select=uniquename HTTP/1.1
    

    ResponseResponse

    {  
    "@odata.context":"[Organization URI]/api/data/v9.0/$metadata#workflows(uniquename)",
    "value":[  
         {  
             "@odata.etag":"W/\"1084677\"",
             "uniquename":"new_mycustombpf",
             "workflowid":"2669927e-8ad6-4f95-8a9a-f1008af6956f"
         }
      ]
    }
    
  • 조직 서비스 사용: 다음 코드 샘플을 사용합니다.Using the Organization service: Use the following code sample:

    QueryExpression query = new QueryExpression
    {
        EntityName = "workflow",
        ColumnSet = new ColumnSet("uniquename"),
        Criteria = new FilterExpression
        {
            Conditions =
            {
                new ConditionExpression
                {
                    AttributeName = "name",
                    Operator = ConditionOperator.Equal,
                    Values = { "My Custom BPF" }
                }
            }
        }
    };
    Workflow Bpf = (Workflow)_serviceProxy.RetrieveMultiple(query).Entities[0]; 
    

참고

IsBPFEntity 속성은 비즈니스 프로세스 흐름 엔터티에 대해 true입니다.The IsBPFEntity property is true for business process flow entities. 인스턴스에서 다음 Web API 요청을 실행하여 모든 비즈니스 프로세스 흐름 엔터티를 검색할 수 있습니다.You can retrieve all the business process flow entities in your instance by running the following Web API request:

GET [Organization URI]/api/data/v9.0/EntityDefinitions?$select=SchemaName,LogicalName,DisplayName&$filter=IsBPFEntity eq true HTTP/1.1

비즈니스 프로세스 흐름에 대한 보안 관리Manage security for business process flows

비즈니스 프로세스 흐름 인스턴스를 저장하기 위해 비즈니스 프로세스 흐름을 활성화할 때 자동으로 생성되는 사용자 지정 엔터티는 Common Data Service의 다른 사용자 지정 엔터티에 대한 표준 보안 모델을 준수합니다.The custom entity that is automatically created on activating a business process flow to store business process flow instances adheres to the standard security model as for any other custom entity in Common Data Service. 즉, 이러한 엔터티에 대해 부여된 권한은 사용자에게 비즈니스 프로세스 흐름에 대한 런타임 사용 권한을 정의합니다.This implies that privileges granted on these entities define the runtime permissions for users for business process flows.

사용자 지정 비즈니스 프로세스 흐름 엔터티에는 조직 범위가 있습니다.The custom business process flow entity has organization scope. 이 엔터티에 대한 기본 만들기, 검색, 업데이트 및 삭제 권한은 사용자가 할당된 역할을 기반으로 해당 권한을 정의합니다.The regular create, retrieve, update and delete privileges on this entity define the permission users would have based on their assigned roles. 기본적으로 비즈니스 프로세스 흐름 사용자 지정 엔터티가 생성되는 경우 시스템 관리자시스템 사용자 지정자 보안 역할에 대한 액세스 권한만 명시적으로 부여되므로 필요에 따라 다른 보안 역할에 대한 새 비즈니스 프로세스 흐름 엔터티(예: 내 사용자 지정 BPF)에 대한 사용 권한을 명시적으로 부여해야 합니다.By default, when the business process flow custom entity is created, only System Administrator and System Customizer security roles are granted access to it, and you must explicitly grant permissions to the new business process flow entity (for example, My Custom BPF) for other security roles as required.

비즈니스 프로세스 흐름 엔터티 레코드(프로세스 인스턴스) 만들기, 검색, 업데이트 및 삭제Create, retrieve, update, and delete business process flow entity records (process instances)

비즈니스 프로세스 흐름 정의를 활성화하는 동안 자동으로 생성된 사용자 지정 엔터티는 비즈니스 프로세스 흐름 정의에 대한 모든 프로세스 인스턴스를 저장합니다.The custom entity that is automatically created on activating a business process flow definition stores all the process instances for the business process flow definition. 사용자 지정 엔터티는 Web API 및 CRM 2011 엔드포인트를 사용하여 레코드(프로세스 인스턴스)를 표준 프로그래밍 방식으로 생성하고 관리하도록 지원합니다.The custom entity supports the standard programmatic creation and management of records (process instances) using Web API and CRM 2011 endpoint.

중요

UI(클라이언트)를 통해 또는 프로그래밍 방식으로 이 섹션에서 지원되는 정보를 사용하여 엔터티 레코드를 다른 프로세스 인스턴스로 전환하는 작업을 지원합니다.Switching to another process instance for an entity record is only supported through UI (client) or programmatically using information available in this section. 더 이상 SetProcess 메시지(SetProcess Action 또는 SetProcessRequest)를 사용하여 대상 엔터티 레코드에 대한 프로세스를 프로그래밍 방식으로 전환(다른 비즈니스 프로세스 흐름을 활성 프로세스 인스턴스로 설정)할 수 없습니다.You can no longer use the SetProcess message (SetProcess Action or SetProcessRequest) to programmatically switch processes (set another business process flow as the active process instance) for the target entity record.

다음과 같은 3단계의 엔터티 간 비즈니스 프로세스 흐름인 "내 사용자 지정 BPF"가 포함된 예제를 사용해 보겠습니다. 1단계:계정, 2단계:계정 및 3단계:계약.Lets consider the following example where we have a cross-entity business process flow, "My Custom BPF," with 3 stages: S1:Account, S2:Account, and S3:Contact.

비즈니스 프로세스 흐름 엔터티에 대한 모든 레코드(인스턴스) 검색Retrieve all the records (instances) for a business process flow entity

비즈니스 프로세스 흐름 엔터티의 이름이 "new_mycustombpf"인 경우 다음 쿼리를 사용하여 비즈니스 프로세스 흐름 엔터티에 대한 모든 레코드(프로세스 인스턴스)를 검색합니다.If the name of your business process flow entity is "new_mycustombpf", use the following query to retrieve all the records (process instances) for your business process flow entity:

GET [Organization URI]/api/data/v9.0/new_mycustombpfs HTTP/1.1 

이때 아무것도 없어서 응답으로 인스턴스를 가져오지 않을 수 있습니다.At this point, you might not get any instances in your response as there are none. 이 항목의 뒷부분에서 비즈니스 프로세스 흐름 정의의 인스턴스를 만든 후 이 요청을 실행합니다.Run this request after creating an instance of your business process flow definition later in this topic.

참고

비즈니스 프로세스 흐름 엔터티의 이름을 검색하는 방법을 알아보려면 이전 섹션 비즈니스 프로세스 흐름 엔터티를 참조하세요.To know how to retrieve the name of your business process flow entity, see the earlier section, Business process flow entity.

비즈니스 프로세스 흐름 엔터티 레코드(프로세스 인스턴스) 만들기Create a business process flow entity record (process instance)

UI를 사용하지 않고 엔터티 레코드의 또 다른 비즈니스 프로세스 흐름으로 전환하려면 비즈니스 프로세스 흐름 엔터티 레코드(프로세스 인스턴스)를 프로그래밍 방식으로 만듭니다.Create a business process flow entity record (process instance) programmatically if you want to switch to another business process flow for an entity record without using the UI.

비즈니스 프로세스 흐름 엔터티 레코드를 만들려면 다음 값을 지정해야 합니다.To create a business process flow entity record, you need to specify the following values:

  • @odata.bind 주석을 통해 단일 값 탐색 속성을 설정하여 기본 엔터티 레코드에 비즈니스 프로세스 흐름 엔터티 레코드를 연결합니다.Associate the business process flow entity record to a primary entity record by setting the single-valued navigation property using the @odata.bind annotation. 비즈니스 프로세스 흐름 정의의 기본 엔터티 레코드를 가리키는 탐색 속성 이름을 찾으려면 CSDL $metadata 문서를 사용합니다.To find out the navigation-property name that points to the primary entity record for your business process flow definition, use the CSDL $metadata document.

  • @odata.bind 주석을 통해 단일 값 탐색 속성을 설정하여 비즈니스 프로세스 흐름 정의에 지정된 유효한 스테이지에 비즈니스 프로세스 흐름 엔터티 레코드를 연결합니다.Associate the business process flow entity record to a valid stage specified in the business process flow definition by setting the single-valued navigation property using the @odata.bind annotation. 비즈니스 프로세스 흐름 정의의 스테이지 레코드를 가리키는 탐색 속성 이름(일반적으로 activestageid)을 찾으려면 CSDL $metadata 문서를 사용합니다.To find out the navigation-property name (typically activestageid) that points to the stage record for your business process flow definition, use the CSDL $metadata document.

    또한 비즈니스 프로세스 흐름 정의의 ID가 2669927e-8ad6-4f95-8a9a-f1008af6956f인 경우 다음 웹 API 요청을 사용하여 비즈니스 프로세스 흐름 정의의 모든 스테이지 정보를 검색할 수 있습니다.Also, you can retrieve information about all the stages for a business process flow definition by using the following Web API request assuming that the ID of your business process flow definition is 2669927e-8ad6-4f95-8a9a-f1008af6956f:

    요청Request

    GET [Organization URI]/api/data/v9.0/processstages?$select=stagename&$filter=processid/workflowid eq 2669927e-8ad6-4f95-8a9a-f1008af6956f HTTP/1.1
    

    ResponseResponse

    {
        "@odata.context": "[Organization URI]/api/data/v9.0/$metadata#processstages(stagename)",
        "value": [
            {
                "@odata.etag": "W/\"858240\"",
                "stagename": "S1",
                "processstageid": "9a9185f5-b75b-4bbb-9c2b-a6626683b99b"
            },
            {
                "@odata.etag": "W/\"858239\"",
                "stagename": "S3",
                "processstageid": "a107e2fd-7543-4c1a-b6b4-b8060ecb1a1a"
            },
            {
                "@odata.etag": "W/\"858238\"",
                "stagename": "S2",
                "processstageid": "19a11fc0-3398-4214-8522-cb2a97f66e4b"
            }
        ]
    }
    

그러고 나서 다음 요청을 사용하여 계정 레코드(ID=a176be9e-9a68-e711-80e7-00155d41e206)의 비즈니스 프로세스 흐름 정의 인스턴스 및 프로세스 인스턴스, S1(ID=9a9185f5-b75b-4bbb-9c2b-a6626683b99b)의 첫 번째 스테이지로 설정된 활성 스테이지를 만듭니다.Next, use the following request to create an instance of your business process flow definition for an account record (ID=a176be9e-9a68-e711-80e7-00155d41e206) and the active stage set as the first stage of the process instance, S1 (ID=9a9185f5-b75b-4bbb-9c2b-a6626683b99b):

요청Request

POST [Organization URI]/api/data/v9.0/new_mycustombpfs HTTP/1.1 
Content-Type: application/json; charset=utf-8 
OData-MaxVersion: 4.0 
OData-Version: 4.0 
Accept: application/json 

{
    "bpf_accountid@odata.bind": "/accounts(a176be9e-9a68-e711-80e7-00155d41e206)",
    "activestageid@odata.bind": "/processstages(9a9185f5-b75b-4bbb-9c2b-a6626683b99b)"    
}

ResponseResponse

HTTP/1.1 204 No Content
OData-Version: 4.0
OData-EntityId: [Organization URI]/api/data/v9.0/new_mycustombpfs(cc3f721b-026e-e811-80ff-00155d513100)

활성 스테이지가 첫 번째 스테이지가 아닌 다른 단계로 설정된 비즈니스 프로세스 흐름 정의 인스턴스를 만들려면 요청에 traversedpath도 제공해야 합니다.Note that if you want to create an instance of your business process flow definition with the active stage set as a stage other than the first stage, you must also provide traversedpath in your request. 트래버스된 경로는 비즈니스 프로세스 흐름 인스턴스의 방문한 단계를 나타내는 프로세스 스테이지 ID의 쉼표로 구분된 문자열입니다.Traversed path is the comma-delimited string of process stage ids that represent visited stages of the business process flow instance. 다음 요청은 계정 레코드(ID = 679b2464-71b5-e711-80f5-00155d513100)에 대한 인스턴스를 작성하고 활성 스테이지는 두 번째 스테이지 S2(ID = 19a11fc0-3398-4214-8522-cb2a97f66e4b)로 설정합니다.The following request creates an instance for an account record (ID=679b2464-71b5-e711-80f5-00155d513100) and active stage set as the second stage, S2 (ID=19a11fc0-3398-4214-8522-cb2a97f66e4b).

POST [Organization URI]/api/data/v9.0/new_mycustombpfs HTTP/1.1 
Content-Type: application/json; charset=utf-8 
OData-MaxVersion: 4.0 
OData-Version: 4.0 
Accept: application/json 

{
    "bpf_accountid@odata.bind": "/accounts(679b2464-71b5-e711-80f5-00155d513100)",
    "activestageid@odata.bind": "/processstages(19a11fc0-3398-4214-8522-cb2a97f66e4b)",
    "traversedpath":"9a9185f5-b75b-4bbb-9c2b-a6626683b99b,19a11fc0-3398-4214-8522-cb2a97f66e4b"   
}

비즈니스 프로세스 흐름 엔터티 레코드(프로세스 인스턴스) 업데이트Update a business process flow entity record (process instance)

프로세스 인스턴스를 업데이트하여 다음 또는 이전 단계로 이동하거나, 프로세스 인스턴스를 중단하거나, 프로세스 인스턴스를 다시 활성화하거나, 프로세스 인스턴스를 완료할 수 있습니다.You can update a process instance to move to next or previous stage, abandon a process instance, reactivate a process instance, or finish a process instance.

스테이지 탐색Stage navigation

다른 스테이지로 이동하려면 프로세스 인스턴스 레코드를 업데이트하여 활성 스테이지 ID를 변경하고 이에 따라 트래버스된 경로를 업데이트해야 합니다.To navigate to a different stage, you need to update a process instance record to change its active stage ID and accordingly update the traversed path. 비즈니스 프로세스 흐름 인스턴스를 업데이트하는 동안에는 다음 또는 이전 스테이지로만 이동해야 합니다.Note that you must only move to the next or previous stage while updating a business process flow instance.

스테이지 탐색을 수행하려면 업데이트할 비즈니스 프로세스 흐름 인스턴스의 ID가 필요합니다.To perform stage navigation, you will need the ID of the business process flow instance that you want to update. 비즈니스 프로세스 흐름의 모든 인스턴스를 검색하려면 이전의 비즈니스 프로세스 흐름 엔터티의 모든 레코드(인스턴스) 검색을 참조하세요.To retrieve all the instances of your business process flow, see Retrieve all the records (instances) for a business process flow entity earlier.

업데이트하려는 프로세스 인스턴스의 ID가 dc2ab599-306d-e811-80ff-00155d513100이면 다음 요청을 사용하여 S1에서 S2로 활성 스테이지를 업데이트합니다.Assuming the ID of the process instance you want to update is dc2ab599-306d-e811-80ff-00155d513100, use the following request to update the active stage from S1 to S2:

PATCH [Organization URI]/api/data/v9.0/new_mycustombpfs(dc2ab599-306d-e811-80ff-00155d513100) HTTP/1.1
Content-Type: application/json
OData-MaxVersion: 4.0
OData-Version: 4.0

{
    "activestageid@odata.bind": "/processstages(19a11fc0-3398-4214-8522-cb2a97f66e4b)",
    "traversedpath": "9a9185f5-b75b-4bbb-9c2b-a6626683b99b,19a11fc0-3398-4214-8522-cb2a97f66e4b"
}

프로세스 인스턴스의 상태 변경: 중단, 다시 활성화 또는 완료Change the state of a process instance: Abort, Reactivate, or Finish

프로세스 인스턴스의 상태는 활성, 완료 또는 중단됨 중 하나일 수 있습니다.A process instance can have one of the following states: Active, Finished, or Aborted. 상태는 프로세스 인스턴스 레코드의 다음 특성에 의해 결정됩니다.The state is determined by the following attributes on the process instance record:

  • statecode: 프로세스 인스턴스의 상태를 표시합니다.statecode: Displays the status of the process instance.

    Value 레이블Label
    120 진행 중Active
    61 비활성Inactive
  • statuscode: 프로세스 인스턴스의 상태 정보를 표시합니다.statuscode: Displays information about status of the process instance.

    Value 레이블Label
    61 진행 중Active
    22 마침Finished
    33 중단됨Aborted

따라서 프로세스 인스턴스를 중단하려면 다음 요청을 사용하여 statecodestatuscode 값을 적절하게 설정합니다.So, to Abort a process instance, use the following request set the statecode and statuscode values appropriately:

PATCH [Organization URI]/api/data/v9.0/new_mycustombpfs(dc2ab599-306d-e811-80ff-00155d513100) HTTP/1.1   
Content-Type: application/json   
OData-MaxVersion: 4.0   
OData-Version: 4.0 
  
{ 
    "statecode" : "1", 
    "statuscode": "3" 
}

참고

모든 스테이지에서 프로세스 인스턴스를 중단할 수 있습니다.You can abort a process instance at any stage.

마찬가지로 프로세스 인스턴스를 다시 활성화하려면 위 코드의 statecodestatuscode 값을 각각 01로 바꿉니다.Similarly, to reactivate a process instance, replace the statecode and statuscode values in the above code with 0 and 1 respectively.

마지막으로 프로세스 인스턴스 상태를 프로세스 인스턴스의 마지막 스테이지에서만 가능한 완료로 설정하려면 위 코드의 statecodestatuscode 값을 각각 02로 바꿉니다.Finally, to set a process instance status as Finished, which is only possible at the last stage of a process instance, replace the statecode and statuscode values in the above code with 0 and 2 respectively.

엔터티 간 탐색Cross-entity navigation

이 예제에서 엔터티 간 탐색의 경우 프로세스 인스턴스의 활성 스테이지를 마지막 스테이지, S3(ID=a107e2fd-7543-4c1a-b6b4-b8060ecb1a1a)으로 설정하고, 이에 따라 트래버스된 경로를 업데이트하고, 비즈니스 프로세스 흐름 정의에 따라 연락처 레코드를 기본 엔터티 레코드로 설정해야 합니다.For cross-entity navigation in this example, you must set the active stage of the process instance to the last stage, S3 (ID=a107e2fd-7543-4c1a-b6b4-b8060ecb1a1a), update the traversed path accordingly, and set a contact record as the primary entity record as per the business process flow definition.

PATCH [Organization URI]/api/data/v9.0/new_mycustombpfs(dc2ab599-306d-e811-80ff-00155d513100) HTTP/1.1   
Content-Type: application/json   
OData-MaxVersion: 4.0   
OData-Version: 4.0 
  
{
    "activestageid@odata.bind": "/processstages(a107e2fd-7543-4c1a-b6b4-b8060ecb1a1a)",
    "traversedpath":"9a9185f5-b75b-4bbb-9c2b-a6626683b99b,19a11fc0-3398-4214-8522-cb2a97f66e4b,a107e2fd-7543-4c1a-b6b4-b8060ecb1a1a",
    "bpf_contactid@odata.bind": "/contacts(0e3f10b0-da33-e811-80fc-00155d513100)"
}

비즈니스 프로세스 흐름 엔터티 레코드(프로세스 인스턴스) 삭제Delete a business process flow entity record (process instance)

다음 웹 API 요청을 사용합니다.Use the following Web API request:

요청Request

DELETE [Organization URI]/api/data/v9.0/new_mycustombpfs(dc2ab599-306d-e811-80ff-00155d513100) HTTP/1.1

ResponseResponse

레코드가 있는 경우 삭제가 성공했음을 나타내기 위해 상태 204가 포함된 정상 응답을 받게 됩니다.If the record exists, you’ll get a normal response with status 204 to indicate the delete was successful. 엔터티를 찾을 수 없는 경우 상태 404가 포함된 응답을 받게 됩니다.If the entity isn’t found, you’ll get a response with status 404.

RetrieveProcessInstances 및 RetrieveActivePath 메시지 사용Use RetrieveProcessInstances and RetrieveActivePath messages

RetrieveProcessInstances 메시지(RetrieveActivePath Function 또는 RetrieveProcessInstancesRequest)를 사용하여 모든 비즈니스 프로세스 정의에서 엔터티 레코드의 모든 비즈니스 프로세스 흐름 인스턴스를 검색합니다.Use the RetrieveProcessInstances message (RetrieveActivePath Function or RetrieveProcessInstancesRequest) to retrieve all the business process flow instances for an entity record across all business process definitions. 엔터티에 대해 반환된 비즈니스 프로세스 흐름 인스턴스는 인스턴스에 대한 modifiedon 특성을 기준으로 정렬됩니다.The business process flow instances returned for an entity are ordered based on the modifiedon attribute for the instance. 예를 들어 가장 최근에 수정된 비즈니스 프로세스 흐름 인스턴스는 반환된 컬렉션의 ‘첫 번째’ 레코드입니다.**For example, the most recently modified business process flow instance will be the first record in the returned collection. 가장 최근에 수정된 비즈니스 프로세스 흐름 인스턴스는 엔터티 레코드의 UI에서 활성 상태인 인스턴스입니다.The most recently modified business process flow instance is the one that is active on the UI for an entity record.

RetrieveProcessInstances 메시지 사용의 결과로 엔터티에 대해 반환된 각 비즈니스 프로세스 흐름 인스턴스 레코드는 활성 스테이지 ID를 processstageid 특성에 저장합니다. 이 특성을 사용하여 활성 스테이지를 찾은 후 이전 또는 다음 스테이지로 이동할 수 있습니다.Each business process flow instance record returned for an entity record as a result of using the RetrieveProcessInstances message stores the ID of the active stage in the processstageid attribute that can be used to find the active stage, and then move to the previous or next stage. 이를 수행하려면 먼저 RetrieveActivePath 메시지(RetrieveActivePath Function 또는 RetrieveActivePathRequest)를 사용하여 비즈니스 프로세스 흐름 인스턴스의 활성 경로 및 프로세스 흐름 인스턴스에서 사용할 수 있는 스테이지를 찾아야 합니다.To do so, you first need to find the active path of a business process flow instance and the stages available in the process flow instance using the RetrieveActivePath message (RetrieveActivePath Function or RetrieveActivePathRequest).

비즈니스 프로세스 흐름 인스턴스의 활성 스테이지 및 활성 경로 정보가 있으면 정보를 사용하여 활성 경로에서 이전 또는 다음 단계로 이동할 수 있습니다.Once you have the active stage and the active path information for a business process flow instance, you can use the information to move to a previous or next stage in the active path. 스테이지의 앞으로 탐색은 순서대로 수행되어야 합니다. 즉, 활성 경로에서 다음 스테이지로 앞으로만 이동해야 합니다.Forward navigation of stages must be done in sequence, that is, you should only move forward to the next stage in the active path.

코드가 이러한 두 메서드의 사용 및 조직 서비스를 사용한 스테이지 탐색을 보여 주는 전체 샘플을 보려면 샘플: 비즈니스 프로세스 흐름 작업을 참조하세요.For the complete sample that code demonstrates the usage of these two methods and stage navigation using the Organization service, see Sample: Work with business process flows.

엔터티 레코드를 만드는 동안 비즈니스 프로세스 흐름 적용Apply business process flow while creating an entity record

이 섹션에서는 비즈니스 프로세스 흐름을 Common Data Service에서 만든 새 엔터티 레코드에 자동으로 적용하는 기본 동작과 새 엔터티 레코드에 대해 선택한 비즈니스 프로세스 흐름을 적용하기 위해 이를 재정의하는 방법에 대해 설명합니다.This section provides information about the default behavior for applying business process flows automatically to new entity records created in Common Data Service, and how you can override it to apply a business process flow of your choice for new entity records.

기본적으로 여러 비즈니스 프로세스 흐름이 정의된 엔터티에 대해 시스템은 다음과 같은 다중 단계 논리를 사용하여 새 엔터티 레코드에 비즈니스 프로세스 흐름을 적용합니다.By default, for an entity that has multiple business process flows defined for it, the system applies a business process flow to the new entity record using the following multi-step logic:

  1. 비즈니스 프로세스 흐름 정의 레코드의 Workflow.PrimaryEntity 특성을 기반으로 새 엔터티 레코드에 적용할 수 있는 모든 비즈니스 프로세스 흐름을 식별합니다.Identify all business process flows applicable to the new entity record based on the Workflow.PrimaryEntity attribute of the business process flow definition records.
  2. 현재 사용자가 액세스할 수 있는 비즈니스 프로세스 흐름 정의를 식별합니다.Identify the business process flow definitions that the current user has access to. 비즈니스 프로세스 흐름의 액세스를 결정하고 관리하는 방법에 대한 자세한 내용은 이 항목의 앞부분에 나오는 비즈니스 프로세스 흐름의 보안 관리를 참조하세요.For information about how access to a business process flow is determined and managed, see Manage security for business process flows earlier in this topic.
  3. 시스템의 모든 비즈니스 프로세스 흐름 정의에는 엔터티별 전역 순서가 적용됩니다.All business process flow definitions in the system are subject to a global order per entity. 비즈니스 프로세스 흐름의 순서는 Workflow.ProcessOrder 특성에 저장됩니다.The order of the business process flow is stored in the Workflow.ProcessOrder attribute. 엔터티의 비즈니스 프로세스 흐름 정의는 이 순서에 따라 정렬되며 최소 순서 값이 포함된 정의가 선택됩니다.The business process flow definitions for an entity are sorted based on this order, and the one with the least order value is picked.
  4. 마지막으로, 비즈니스 앱(앱 모듈)에서 엔터티 레코드를 만들면 새 엔터티 레코드에 자동으로 적용될 비즈니스 프로세스 흐름을 선택하기 위해 하나 이상의 필터링 수준이 적용됩니다.Finally, if the entity record is created from a business app (app module), one more level of filtering is applied to pick the business process flow to be applied automatically to the new entity record. 앱에서 작업하는 경우 사용자는 비즈니스 앱에 할당된 보안 역할을 통해 액세스 권한이 있는 관련 엔터티, 비즈니스 프로세스 흐름, 보기 및 양식에만 액세스할 수 있습니다. When working in an app, users can access only relevant entities, business process flows, views and forms that they have access to by virtue of the security roles assigned to the business app.
    • 비즈니스 앱에 비즈니스 프로세스 흐름이 포함되어 있지 않은 경우 비즈니스 프로세스 흐름이 3단계까지 설명된 대로 적용됩니다.If the business app does not contain any business process flow then business process flow is applied as explained until step 3.
    • 비즈니스 앱에 하나 이상의 비즈니스 프로세스 흐름이 있는 경우 앱에 있는 비즈니스 프로세스 흐름만 적용됩니다.If the business app has one or more business process flows then only the business process flows present in the app would be applicable. 이 경우 사용자가 비즈니스 앱 컨텍스트 내에서 작업하는 경우 3단계의 비즈니스 프로세스 흐름 목록은 앱 모듈 내부에 있는 비즈니스 앱의 일부인 것으로 필터링되어 프로세스 순서를 기준으로 정렬됩니다.In this case, when the user is working within a business app context, the list of business process flows from step 3 are filtered further to the ones that are part of the business app that are present inside the app module, and are sorted based on the process order.
    • 엔터티용 비즈니스 앱 또는 사용자가 액세스할 수 있는 비즈니스 앱에서 비즈니스 프로세스 흐름을 사용할 수 없는 경우에는 새 엔터티 레코드에 비즈니스 프로세스 흐름이 적용되지 않습니다.If no business process flow is available in a business app for the entity or one that the user has access to then no business process flow is applied for the new entity record.

새 엔터티 레코드에 자동으로 적용되는 비즈니스 프로세스 흐름의 기본 논리를 재정의할 수 있습니다.You can override the default logic of business process flows getting applied automatically to new entity records. 이를 수행하려면 새 엔터티 레코드를 만드는 동안 엔터티의 ProcessId 특성을 다음 값 중 하나로 설정합니다.To do so, set the ProcessId attribute of the entity to one of the following values while creating a new entity record:

  • 새 엔터티 레코드의 비즈니스 프로세스 흐름 설정을 건너뛰려면 Guid.Empty로 설정합니다.Set to Guid.Empty to skip setting a business process flow for new entity records. 엔터티 레코드를 대량으로 만들지만 비즈니스 프로세스 흐름을 엔터티 레코드에 적용하지 않으려는 경우 이렇게 설정할 수 있습니다.You might want to do that if you are bulk creating entity records, but don't want business process flow to to be applied to them.
  • 특정 비즈니스 프로세스 흐름 엔터티(엔터티 참조)로 설정합니다.Set it to a specific business process flow entity (as an entity reference). 이 경우 시스템은 기본 논리 대신 지정된 비즈니스 프로세스 흐름을 적용합니다.In this case, the system will apply the specified business process flow instead of the default logic.

새 엔터티 레코드를 만드는 동안 ProcessId 특성 값을 설정하지 않으면 시스템이 앞에서 설명한 대로 기본 논리를 적용합니다.If you do not set a value for the ProcessId attribute while creating a new entity record, the system will apply the default logic as explained earlier.

참고

새 엔터티 레코드에 자동으로 적용되는 비즈니스 프로세스 흐름의 기본 논리를 재정의하는 기능은 프로그래밍 방식으로만 지원됩니다.Overriding the default logic of business process flows getting applied automatically to new entity records is only supported programmatically. UI를 사용하여 이 작업을 수행할 수 없습니다.You cannot do this using the UI.

비즈니스 프로세스 흐름에 사용할 수 있는 엔터티의 레거시 프로세스 관련 특성(예: ProcessId, StageIdTraversedPath)은 이미 사용되지 않습니다.The legacy process-related attributes (such as ProcessId, StageId, and TraversedPath) on entities enabled for business process flows are already deprecated. 대상 엔터티 레코드의 이러한 레거시 프로세스 관련 특성을 조작하는 경우 비즈니스 프로세스 흐름 상태의 일관성이 보장되지 않고 이는 지원되는 시나리오가 아닙니다.Manipulating these legacy process related attributes for target entity records does not guarantee consistency of the business process flow state, and is not a supported scenario. 권장되는 방법은 비즈니스 프로세스 흐름 엔터티 레코드(프로세스 인스턴스) 만들기, 검색, 업데이트 및 삭제 섹션의 앞부분에서 설명한 대로 비즈니스 프로세스 흐름 엔터티의 특성을 사용하는 것입니다.The recommended way is to use the attributes of the business process flow entity as explained earlier in the section Create, retrieve, update, and delete business process flow entity records (process instances)

유일한 예외는 이전 섹션 엔터티 레코드를 만드는 동안 비즈니스 프로세스 흐름 적용에 설명된 대로 엔터티 레코드를 만드는 동안 ProcessId 특성을 프로그래밍 방식으로 수정하여 비즈니스 프로세스 흐름의 기본 애플리케이션을 새 레코드로 재정의하는 경우입니다.The only exception to this is programmatically modifying the ProcessId attribute while creating an entity record to override the default application of the business process flow to the new record as explained in the previous section: Apply business process flow while creating an entity record.

비즈니스 프로세스 흐름의 클라이언트 쪽 프로그래밍 기능 지원Client-side programmability support for business process flows

양식 스크립트에서 비즈니스 프로세스 흐름을 조작하는 데 사용할 수 있는 클라이언트 쪽 개체가 있습니다.There is a client-side object you can use to interact with business process flows in your form scripts. 비즈니스 프로세스 흐름은 프로세스가 레코드에 적용되거나, 스테이지가 변경되거나, 상태가 Active, Finished 또는 Aborted로 변경될 때마다 클라이언트 쪽 이벤트를 트리거합니다.Business process flows trigger client-side events every time a process is either applied to a record, the stage is changed, or its status is changed to Active, Finished, or Aborted. 추가 정보: formContext.data.process(클라이언트 API 참조)More information: formContext.data.process (Client API reference)

최대 프로세스, 스테이지 및 단계 수Maximum number of processes, stages, and steps

엔터티당 최대 활성화된 비즈니스 프로세스 흐름 수의 기본값은 10개입니다.Per entity, the default value for the maximum number of activated business process flows is 10. Organization.MaximumActiveBusinessProcessFlowsAllowedPerEntity 특성을 사용하여 다른 값을 지정할 수 있습니다.You can specify a different value by using the Organization.MaximumActiveBusinessProcessFlowsAllowedPerEntity attribute. 그러나 값이 10보다 크면 비즈니스 프로세스 흐름에 할당된 레코드를 열거나 프로세스를 전환할 때 시스템 성능이 저하될 수 있습니다.However, if the value is greater than 10, you may see a decrease in your system’s performance when you switch processes or open a record that has an assigned business process flow. 프로세스가 여러 엔터티에 걸쳐 있을 경우 특히 현저하게 나타날 수 있습니다.This may be especially noticeable if processes span multiple entities.

다음 설정은 사용자 지정할 수 없습니다.The following settings aren’t customizable:

  • 프로세스에서 엔터티 당 최대 스테이지 수는 30입니다.The maximum number of stages per entity in the process is 30.

  • 각 스테이지에서 최대 단계 수는 30입니다.The maximum number of steps in each stage is 30.

  • 프로세스 흐름에 참여할 수 있는 최대 엔터티 수는 5개입니다.The maximum number of entities that can participate in the process flow is 5.